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


«October 2025»
1234
567891011
12131415161718
19202122232425
262728293031


公告
本博客在此声明所有文章均为转摘,只做资料收集使用。并无其他商业用途。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:210
评论数量:205
留言数量:-19
访问次数:924056
建立时间:2007年5月10日




[J2SE相关]JDK1.5新特性--java.util.concurrent CountDownLatch(4)
文章收藏,  网上资源,  软件技术,  电脑与网络

李小白 发表于 2007/7/19 9:41:20

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 StartNo.4 arrivedNo.1 arrivedNo.7 arrivedNo.9 arrivedNo.3 arrivedNo.2 arrivedNo.8 arrivedNo.10 arrivedNo.6 arrivedNo.5 arrivedGame Over


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



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



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

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