Java中等待所有线程都执行结束
来源:互联网 发布:手机微信java通用版 编辑:程序博客网 时间:2024/05/17 08:55
原文地址:http://blog.csdn.net/liweisnake/article/details/12966761
今天看到一篇文章,是关于java中如何等待所有线程都执行结束,文章总结得很好,原文如下http://software.intel.com/zh-cn/blogs/2013/10/15/java-countdownlatchcyclicbarrier/?utm_campaign=CSDN&utm_source=intel.csdn.net&utm_medium=Link&utm_content=others-%20Java
看过之后在想java中有很大的灵活性,应该有更多的方式可以做这件事。
这个事情的场景是这样的:许多线程并行的计算一堆问题,然后每个计算存在一个队列,在主线程要等待所有计算结果完成后排序并展示出来。这样的问题其实很常见。
1. 使用join。这种方式其实并不是那么的优雅,将所有线程启动完之后还需要将所有线程都join,但是每次join都会阻塞,直到被join线程完成,很可能所有被阻塞线程已经完事了,主线程还在不断地join,貌似有点浪费,而且两个循环也不太好看。
2. 使用wait/notifyAll,这个方式其实跟上面是类似的,只是比较底层些吧(join实际上也是wait)。 3. 使用CountDownLatch,这其实是最优雅的写法了,每个线程完成后都去将计数器减一,最后完成时再来唤醒。 4. 使用CyclicBarrier。这里其实类似上面,这个berrier只是在等待完成后自动调用传入CyclicBarrier的Runnable。
0 0
- java中等待所有线程都执行结束
- Java中等待所有线程都执行结束
- c# Task多线程并行任务中等待所有线程都执行完成
- Java中等待线程执行完毕
- Java中等待提交线程池的所有线程执行完成
- 在GUI中等待子线程结束
- 前台线程与后台线程及线程池中等待子线程结束
- 多个子线程并发执行,主线程等待所有子线程都结束后再继续运行
- java中等待一些线程执行完之后,再去执行别的方法(后者需要使用前者返回的结果)
- java并发(一) CountDownLatch (在多个线程都结束后再去执行某个任务)
- shell中等待其他程序执行完毕
- java中 等待所有子线程结束 后再执行一段代码。
- java中 等待所有子线程结束 后再执行一段代码。
- Java如何等待子线程执行结束
- Java如何等待子线程执行结束
- Java如何等待子线程执行结束
- Java如何等待子线程执行结束
- Java如何等待子线程执行结束
- C++ 竞赛常用头文件
- 学习笔记:单调队列
- Thinking in Java(6)-private constructors
- 升级Xcode到8之后,一写代码就闪退的问题
- 学习笔记:状态压缩DP
- Java中等待所有线程都执行结束
- poj 2823 Sliding Window 题解
- 编程之美——中国象棋将帅问题
- 学习笔记:树状数组
- 设计模式(九):策略模式Strategy(行为型模式)
- poj 3784 Running Median
- log4j配置详解
- listbox动态选择模版
- jaspersoft 报表设计器简单的使用