如何使用Java Barrier实现线程同步

avatar
作者
筋斗云
阅读量:0

在Java中,可以使用 CyclicBarrier 类来实现线程同步。CyclicBarrier 是一个同步辅助类,允许一组线程在达到某个屏障点之前互相等待。

下面是一个使用 CyclicBarrier 实现线程同步的示例代码:

import java.util.concurrent.CyclicBarrier;  public class BarrierExample {     public static void main(String[] args) {         // 创建一个 CyclicBarrier,指定需要等待的线程数量为3         CyclicBarrier barrier = new CyclicBarrier(3);          // 创建三个线程         Thread thread1 = new Thread(new Worker(barrier));         Thread thread2 = new Thread(new Worker(barrier));         Thread thread3 = new Thread(new Worker(barrier));          // 启动三个线程         thread1.start();         thread2.start();         thread3.start();     }      static class Worker implements Runnable {         private CyclicBarrier barrier;          public Worker(CyclicBarrier barrier) {             this.barrier = barrier;         }          @Override         public void run() {             try {                 System.out.println(Thread.currentThread().getName() + " 正在执行任务...");                 // 等待所有线程到达屏障点                 barrier.await();                 System.out.println(Thread.currentThread().getName() + " 完成任务");             } catch (Exception e) {                 e.printStackTrace();             }         }     } } 

在上面的示例中,创建了一个 CyclicBarrier 对象并指定需要等待的线程数量为3。然后创建了三个线程,并在每个线程中执行任务。每个线程执行任务时会调用 barrier.await() 方法来等待其他线程,直到所有线程都到达屏障点后才会继续执行。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!