您的位置:首页 > 其它

CountDownLatch使用小例

2016-03-01 00:00 453 查看
摘要: CountDownLatch使用小例

需要:主线程里启动子线程,需要等子线程里的某个操作完成后主线程才能继续往下走。

final CountDownLatch countDownLatch = new CountDownLatch(2);
for(int i=0;i<2;i++) {
// 服务端启动
new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(100);
System.out.println("test1");
Thread.sleep(100);
countDownLatch.countDown();
Thread.sleep(100);
System.out.println("test2");
} catch (Exception e) {
e.printStackTrace();
System.exit(-2);
}
}
}).start();
}
System.out.println("test-main1");
try {
countDownLatch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("test-main2");

结果:

test-main1
test1
test1
test-main2
test2
test2

CountDownLatch是原子操作,await()阻塞直到初始值变为0

只有当两个线程都走完test1时主线程才会继续往下走。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  CountDownLatch