您的位置:首页 > 编程语言 > Java开发

java.util.concurrent.CyclicBarrier

2015-11-25 15:46 459 查看
/*
* 一组线程相互等待,直到最后一个线程执行完某一阶段任务后,他们才会一起向下执行。
*
*/
public class CyclicBarrierDemo {

public static void main(String[] args) {
final CyclicBarrier cb = new CyclicBarrier(3);
System.out.println("出发...");
for (int i = 0; i < 3; i++) {
new Thread(new Runnable() {

@Override
public void run() {
try {
TimeUnit.SECONDS.sleep(new Random().nextInt(5)+1);
System.out.println(Thread.currentThread().getName()+":到达山顶了。。。");
cb.await();
System.out.println();
TimeUnit.SECONDS.sleep(new Random().nextInt(5)+1);
System.out.println(Thread.currentThread().getName()+":吃完饭了。。。");
cb.await();
System.out.println();
TimeUnit.SECONDS.sleep(new Random().nextInt(5)+1);
System.out.println(Thread.currentThread().getName()+":唱完歌了。。。");
cb.await();
System.out.println("回家");
} catch (InterruptedException e) {
e.printStackTrace();
} catch (BrokenBarrierException e) {
e.printStackTrace();
}
}
}).start();
}
}
}


出发...
Thread-0:到达山顶了。。。
Thread-1:到达山顶了。。。
Thread-2:到达山顶了。。。

Thread-0:吃完饭了。。。
Thread-2:吃完饭了。。。
Thread-1:吃完饭了。。。

Thread-1:唱完歌了。。。
Thread-0:唱完歌了。。。
Thread-2:唱完歌了。。。
回家
回家
回家
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: