cyclicbarrier在Java中如何使用

   2024-10-08 4950
核心提示:CyclicBarrier是一个同步辅助类,它允许一组线程在达到某个屏障点之前彼此互相等待。在Java中,可以通过以下步骤来使用CyclicBar

CyclicBarrier是一个同步辅助类,它允许一组线程在达到某个屏障点之前彼此互相等待。在Java中,可以通过以下步骤来使用CyclicBarrier:

创建CyclicBarrier对象并指定参与线程的数量和到达屏障点时需要执行的动作。
CyclicBarrier barrier = new CyclicBarrier(3, () -> {    System.out.println("All threads have reached the barrier");});
创建并启动线程,每个线程在到达屏障点之前调用CyclicBarrier的await()方法。
Thread t1 = new Thread(() -> {    try {        System.out.println("Thread 1 is waiting at the barrier");        barrier.await();        System.out.println("Thread 1 has passed the barrier");    } catch (InterruptedException | BrokenBarrierException e) {        e.printStackTrace();    }});t1.start();
当指定数量的线程都调用了await()方法后,CyclicBarrier会执行指定的动作,并重置屏障点,使得线程可以再次在屏障点等待。
Thread t2 = new Thread(() -> {    try {        System.out.println("Thread 2 is waiting at the barrier");        barrier.await();        System.out.println("Thread 2 has passed the barrier");    } catch (InterruptedException | BrokenBarrierException e) {        e.printStackTrace();    }});t2.start();

通过以上步骤,可以实现多个线程在达到某个屏障点后进行同步操作。需要注意的是,CyclicBarrier只能被重置一次,之后需要重新创建新的CyclicBarrier对象。

 
举报打赏
 
更多>同类维修大全
推荐图文
推荐维修大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号