Appearance
09_CyclicBarrrier
CyclicBarrier是一个同步辅助类,允许一组线程互相等待,直到到达某个公共屏障点。因为该屏障在释放等待线程后可以重用,所以称它为循环的屏障。
使用案例
java
public class CyclicBarrierExample {
public static void main(String[] args) {
CyclicBarrier cyclicBarrier = new CyclicBarrier(3, () -> {
System.out.println("All threads are ready, let's go!");
});
Thread t1 = new Thread(() -> {
try {
System.out.println("Thread 1 is ready!");
cyclicBarrier.await();
System.out.println("Thread 1 is running!");
} catch (InterruptedException | BrokenBarrierException e) {
e.printStackTrace();
}
});
Thread t2 = new Thread(() -> {
try {
System.out.println("Thread 2 is ready!");
cyclicBarrier.await();
System.out.println("Thread 2 is running!");
} catch (InterruptedException | BrokenBarrierException e) {
e.printStackTrace();
}
});
Thread t3 = new Thread(() -> {
try {
System.out.println("Thread 3 is ready!");
cyclicBarrier.await();
System.out.println("Thread 3 is running!");
} catch (InterruptedException | BrokenBarrierException e) {
e.printStackTrace();
}
});
t1.start();
t2.start();
t3.start();
}
}