多线程排队执行

版权声明:本文为博主原创文章,欢迎转载并注明出处 https://blog.csdn.net/wender/article/details/85028876

10个线程A一起执行完,再一起执行20个线程B;然后再一起执行10个线程A,再一起执行20个线程B,如此往复50次。

public class CyclickBarrierTest {
    public static void main(String[] args) {
    	int childSize = 10;
    	int mainSize = 20;
    	int circleSize = 50;
        CyclicBarrier cbChild = new CyclicBarrier(childSize);
        CyclicBarrier cbMain = new CyclicBarrier(mainSize);
        ExecutorService esChild = Executors.newCachedThreadPool();
        ExecutorService esMain = Executors.newCachedThreadPool();
        for (int i = 0; i < circleSize; i++) {
            for (int j = 0; j < childSize; j++) {
                try {
                    System.out.println("This is "+i+"st cycle, Thread cbChild" + j+" begin .... ");
                    esChild.execute(()->{try {
						cbChild.await();
					} catch (InterruptedException e) {
						e.printStackTrace();
					} catch (BrokenBarrierException e) {
						e.printStackTrace();
					}});
                    System.out.println("This is "+i+"st cycle, Thread cbChild" + j+" end .... ");
                    
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            System.out.println("cbChild.getParties()--------------------------" + cbChild.getParties());
            
            for (int j = 0; j < mainSize; j++) {
                try {
                    System.out.println("This is "+i+"st cycle, Thread cbMain" + j+" end .... ");
                    esMain.execute(()->{try {
						cbMain.await();
					} catch (InterruptedException e) {
						e.printStackTrace();
					} catch (BrokenBarrierException e) {
						e.printStackTrace();
					}});
                } catch (Exception e) {
                    e.printStackTrace();
                }
                System.out.println("This is "+i+"st cycle, Thread cbMain" + j+" end .... ");
            }
            System.out.println("cbMain.getParties()--------------------------" + cbMain.getParties());
            
            System.out.println("=================================================================");
        }
        
        esChild.shutdown();
        esMain.shutdown();

    }
}

猜你喜欢

转载自blog.csdn.net/wender/article/details/85028876