Java多线程学习:CyclicBarrier(栅栏)

简介:

可以在某处设定一个await事件,该事件就相当于一个栅栏一样拦截住线程,直到所有参与的线程汇集后才打开栅栏让所有线程继续往下执行;

应用实例:

public class CyclicBarrierTest {
// 自定义工作线程
private static class Worker extends Thread {
    
    private CyclicBarrier cyclicBarrier;
    
    public Worker(CyclicBarrier cyclicBarrier) {
        this.cyclicBarrier = cyclicBarrier;
    }
    @Override
    public void run() {
        super.run();
        try {
            System.out.println(Thread.currentThread().getName() + "开始等待其他线程");
            cyclicBarrier.await();
            System.out.println(Thread.currentThread().getName() + "开始执行");
            // 工作线程开始处理,这里用Thread.sleep()来模拟业务处理
            Thread.sleep(1000);
            System.out.println(Thread.currentThread().getName() + "执行完毕");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

public static void main(String[] args) {
    int threadCount = 3;
    CyclicBarrier cyclicBarrier = new CyclicBarrier(threadCount);
    for (int i = 0; i < threadCount; i++) {
        System.out.println("创建工作线程" + i);
        Worker worker = new Worker(cyclicBarrier);
        worker.start();
    }
}
}

参考网址:https://blog.csdn.net/qq_38293564/article/details/80558157

你可能感兴趣的:(java)