package com.example.sina.thread;
import java.util.concurrent.*;
public class CyclicBarrierTest {
public static void main(String[] args) throws InterruptedException {
CyclicBarrier cyclicBarrier = new CyclicBarrier(4, new Runnable() {
@Override
public void run() {
System.out.println("发车了");
}
});
System.out.println(cyclicBarrier.getParties());
for (int i = 0; i < cyclicBarrier.getParties(); i++) {
Thread thread = new Thread(new CyclicWorker(cyclicBarrier));
thread.start();
}
}
static class CyclicWorker implements Runnable {
private CyclicBarrier cyclicBarrier;
CyclicWorker(CyclicBarrier cyclicBarrier) {
this.cyclicBarrier = cyclicBarrier;
}
@Override
public void run() {
for (int i = 1; i < 5; i++) {
System.out.println("乘客:" + i);
try {
cyclicBarrier.await();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (BrokenBarrierException e) {
e.printStackTrace();
}
}
}
}
}
本文深入探讨了Java中CyclicBarrier类的使用方法及其实现原理,通过具体实例展示了如何利用CyclicBarrier来同步多个线程,直到所有线程到达指定的屏障点后继续执行,适用于需要周期性同步任务的场景。
1122

被折叠的 条评论
为什么被折叠?



