AbstractQueuedSynchronizer详解(二)——CountDownLatch源码分析.doc

AbstractQueuedSynchronizer详解(二)——CountDownLatch源码分析.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
AbstractQueuedSynchronizer详解(二)——CountDownLatch源码分析

AbstractQueuedSynchronizer详解(二)——CountDownLatch源码分析 CountDownLatch的使用 CountDownLatch是一个工具类,用于使一个或多个线程等待另一系列线程完成操作,也就是说一些线程在另外一些完成之后才能继续执行,类似线性。 初始CountDownLatch时需要提供一个count参数,await方法将会使线程阻塞,直到这个值变为0,countDown()方法可以使count值减1,一旦到达0后,调用await阻塞的线程将会得到释放。 CountDown一般有两个用法。 一个线程等待多个线程 一个线程等待多个线程完成后再执行,比如一个不限时的考试,10个学生考试,交卷时间不同,当10个学生都交卷后,老师才认为考试结束。下面是该例子: public class ExamDemo { public static class Student implements Runnable { private int num;//学号 private CountDownLatch countDownLatch; public Student(int num, CountDownLatch countDownLatch) { this.num = um; this.countDownLatch = countDownLatch; } @Override public void run() { Random random = new Random(); try { TimeUnit.SECONDS.sleep(random.nextInt(10) + 1); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(学生 + num + 交卷了); //完成工作,将count-1 countDownLatch.countDown(); } } public static class Teacher implements Runnable { private CountDownLatch countDownLatch; public Teacher(CountDownLatch countDownLatch) { this.countDownLatch = countDownLatch; } @Override public void run() { System.out.println(考试开始,不限时间!); try { //等待count变为0 countDownLatch.await(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(考试结束); } } public static void main(String[] args) { Executor executor = Executors.newCachedThreadPool(); CountDownLatch countDownLatch = new CountDownLatch(10); executor.execute(new Teacher(countDownLatch)); for (int i = 1; i = 10; i++) executor.execute(new Student(i, countDownLatch)); } } 多个线程等待一个线程 再举个例子,比如几个司机在等红灯,而一旦变成了绿灯,几个司机就可以都通过了。 public class

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档