您的当前位置:首页正文

Java多线程中的CyclicBarrier详解

2024-11-02 来源:个人技术集锦

什么是CyclicBarrier

同步屏障,允许一组线程互相等待以到达一个公共的障碍点。当设定的线程数到达屏障时,阻塞的线程继续执行。

构造方法

  • CyclicBarrier(int parties),parties设定的阻碍线程数。
  • CyclicBarrier(int parties, Runnable barrierAction),barrierAction任务,设定的线程数都到达屏障时,才会执行。

模拟场景

景区游览车,一次坐满20人就发车,公司团建共去了100人。

public class TestCyclicBarrier {
    public static void main(String[] args) {
		
        CyclicBarrier barrier = new CyclicBarrier(20, new Runnable() {
            @Override
            public void run() {
                System.out.println("满人,发车");
            }
        });

        for(int i=0; i<100; i++) {
             new Thread(()->{
                 try {
                     barrier.await();
                 } catch (InterruptedException e) {
                     e.printStackTrace();
                 } catch (BrokenBarrierException e) {
                     e.printStackTrace();
                 }
             }).start();
        }
    }
}
您可能感兴趣的文章:
Top