CountDownLatch:一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 用给定的计数 初始化 CountDownLatch。由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。之后,会释放所有等待的线程,await 的所有后续调用都将立即返回。这种现象只出现一次——计数无法被重置 /** * 等所有的模块做完以后才做下一项任务 */ public class Module implements Runnable { private CountDownLatch latch;//线程同步器 private String mouldeName;//模块名称 private int time;//用时 public Module(CountDownLatch latch, String mouldeName, int time) { this.latch = latch; this.mouldeName = mouldeName; this.time = time; } public CountDownLatch getLatch() { return latch; } public void setLatch(CountDownLatch latch) { this.latch = latch; } public String getMouldeName() { return mouldeName; } public void setMouldeName(String mouldeName) { this.mouldeName = mouldeName; } public int getTime() { return time; } public void setTime(int time) { this.time = time; } //执行线程 public void run() { this.work(); //线程等待计数器 this.latch.countDown(); } //真正的工作 private void work() { try { TimeUnit.MILLISECONDS.sleep(time); System.out.println(this.getMouldeName() + " 完成,耗时:" + time); } catch (InterruptedException e) { e.printStackTrace(); } } } public class ControlLatch implements Runnable{ private CountDownLatch latch; public ControlLatch(CountDownLatch latch) { this.latch = latch; } public void run() { try { latch.await(); System.out.println("所有的任务已经完成,可以开始其他的任务!!!"); } catch (InterruptedException e) { e.printStackTrace(); } } } ** * CountDownLatch实例 * 等待项目的所有模块都完成的才开始别的任务 */ public class ProjectMain { public static void main(String[] args) { final int SIZE = 20; CountDownLatch latch = new CountDownLatch(SIZE); Random r = new Random(); ExecutorService exec = Executors.newCachedThreadPool(); //执行其他的任务 ControlLatch controller = new ControlLatch(latch); exec.execute(controller); //执行模块 for(int i=0; i exec.execute(new Module(latch,"模块"+(i+1),r.nextInt(2000))); } //关闭线程池 exec.shutdown(); } } |
行业聚焦 面试交流 职位推荐 开发视频 技术交流 腾讯微博 新浪微博
友情链接:课课家教育 阿里云 鲜果 W3Cfuns前端网 中国企业家 环球企业家 投资界 传媒梦工场 MSN中文网 Android开发者社区 cnbeta 投资中国网 又拍云存储 美通说传播 IT茶馆 网商在线 商业评论网 TechOrange IT时代周刊 3W创新传媒 开源中国社区 二维工坊 Iconfans 推酷 智能电视网 FreeBuf黑客与极客 财经网 DoNews 凤凰财经 新财富 eoe移动开发者社区 i黑马 网易科技 新浪科技 搜狐IT 创业家 创业邦 腾讯财经 福布斯中文网 天下网商 TechWeb 雷锋网 新浪创业 和讯科技 品途O2O 极客公园 艾瑞网 抽屉新热榜 卖家网 人民网通信频道 拉勾网 创新派 简单云主机
手机版|黑名单|守望者在线 在线教育 linux 高级程序设计 C/C++ 大数据
( 蜀ICP备14029946号 )
成都守望者科技有限公司 © 2013-2016 All Rights Reserved