多线程执行任务等待所有任务执行完毕
2016-04-13 14:40
316 查看
@Test public void testMultiThread(){ try { final CountDownLatch countDownLatch = new CountDownLatch(2);//计数器 ExecutorService executorService = Executors.newCachedThreadPool(); Future<Boolean> work1 = executorService.submit(new Callable<Boolean>() { @Override public Boolean call() throws Exception { System.out.println("线程1开始执行.........."); Thread.sleep(5000); System.out.println("线程1执行完了............"); countDownLatch.countDown(); return true; } }); Future<Boolean> work2 = executorService.submit(new Callable<Boolean>() { @Override public Boolean call() throws Exception { System.out.println("线程2开始执行.........."); Thread.sleep(5000); System.out.println("线程2执行完了............"); countDownLatch.countDown(); return true; } }); Boolean work1Flag = work1.get();//线程1返回值 Boolean work2Flag = work2.get();//线程2返回值 System.out.println("运行结果:线程1=" + work1Flag + "线程2=" + work2Flag); countDownLatch.await(); System.out.println("执行结束"); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } }
执行结果如下:
线程1开始执行..........
线程2开始执行..........
线程2执行完了............
线程1执行完了............
运行结果:线程1=true线程2=true
执行结束
相关文章推荐
- 数学建模之预测模型总结
- Maven修改全局和局部JDK版本
- mysql中如何分配存储过程的权限
- lightoj 1008 - Fibsieve`s Fantabulous Birthday 乱搞
- IE6-9不支持Textarea的maxlength属性
- C#多线程开发
- LeetCode 189. Rotate Array
- Android Gradle基础实践
- 使用 Docker 搭建 JavaWeb环境(Tomcat,jdk)
- 08-mac ssh的一些命令
- ViewPage轮播
- 创建em
- svn command
- IIS中使用ASP.NET MVC的经验总结
- dijkstra算法--求两点之的最短路径
- dijkstra算法--求两点之的最短路径
- mysql5.6,基于GTID的主从同步与延迟复制
- 148. Sort List
- view桌面模板准备注意事项
- 天平称量