import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
public class CyclicBarrierTest {
public static void main(String[] args) {
Runnable run = new Runnable(){@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"出发...........");
}};
final CyclicBarrier cb = new CyclicBarrier(5,run);
for(int i=0; i<5; i++){
Thread thread = new Thread("threadname-"+i){
@Override
public void run(){
System.out.println(Thread.currentThread().getName()+"线程到达..等待..");
try {
cb.await();
System.out.println(Thread.currentThread().getName()+"开始旅行...");
} catch (InterruptedException e) {
e.printStackTrace();
} catch (BrokenBarrierException e) {
e.printStackTrace();
}
}
};
thread.start();
}
}
/**
* 运行结果:
* threadname-0线程到达..等待..
threadname-2线程到达..等待..
threadname-1线程到达..等待..
threadname-4线程到达..等待..
threadname-3线程到达..等待..
threadname-3出发...........
threadname-2开始旅行...
threadname-0开始旅行...
threadname-1开始旅行...
threadname-3开始旅行...
threadname-4开始旅行...
*/
}
CyclicBarrier的简单事例
最新推荐文章于 2023-04-28 12:05:49 发布