本站首页    管理页面    写新日志    退出


«November 2025»
1
2345678
9101112131415
16171819202122
23242526272829
30


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7647663
建立时间:2006年5月29日




[J2SE]JDK5新特性--java.util.concurrent CountDownLatch(5)
软件技术

lhwork 发表于 2006/12/11 11:14:00

从名字可以看出,CountDownLatch是一个倒数计数的锁,当倒数到0时触发事件,也就是开锁,其他人就可以进入了。在一些应用场合中,需要等待某个条件达到要求后才能做后面的事情;同时当线程都完成后也会触发事件,以便进行后面的操作。 CountDownLatch最重要的方法是countDown()和await(),前者主要是倒数一次,后者是等待倒数到0,如果没有到达0,就只有阻塞等待了。 一个CountDouwnLatch实例是不能重复使用的,也就是说它是一次性的,锁一经被打开就不能再关闭使用了,如果想重复使用,请考虑使用CyclicBarrier。 下面的例子简单的说明了CountDownLatch的使用方法,模拟了100米赛跑,10名选手已经准备就绪,只等裁判一声令下。当所有人都到达终点时,比赛结束。 同样,线程池需要显式shutdown。 package concurrent; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class TestCountDownLatch {   public static void main(String[] args) throws InterruptedException {     // 开始的倒数锁     final CountDownLatch begin = new CountDownLatch(1);     // 结束的倒数锁     final CountDownLatch end = new CountDownLatch(10);     // 十名选手     final ExecutorService exec = Executors.newFixedThreadPool(10);     for(int index = 0; index < 10; index++) {       final int NO = index + 1;       Runnable run = new Runnable(){         public void run() {           try {             begin.await();             Thread.sleep((long) (Math.random() * 10000));             System.out.println("No." + NO + " arrived");           } catch (InterruptedException e) {           } finally {             end.countDown();           }         }       };       exec.submit(run);     }     System.out.println("Game Start");     begin.countDown();     end.await();     System.out.println("Game Over");     exec.shutdown();   } } 运行结果: Game Start No.4 arrived No.1 arrived No.7 arrived No.9 arrived No.3 arrived No.2 arrived No.8 arrived No.10 arrived No.6 arrived No.5 arrived Game Over


阅读全文(3809) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.234 second(s), page refreshed 144803442 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号