线程池怎么让主线程知道所有子线程已经执行完成 线程池怎么让主线程知道所有子线程已经执行完成?如题,一个线程池有5个线程,我想要主线程等待所有子线程执行完,主线程在继续执行,请问怎么解决? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 主线程做个while true循环判断所有的子线程!isAlive() 不知道你的线程池的实现是自写还是使用JDK提供的java.util.concurrent.ThreadPoolExecutor。如果是JDK提供的线程池。可以去判断getPoolSize()是否等于或者小于池的核心线程数量corePoolSize。当然这种情况下也存在陷阱,一就是核心线程数量无法确定是否在空闲状态,只有将corePoolSize设置为0,才能正确判断。二就是线程池对空闲线程的销毁存在一个keepAliveTime,只有要将keepAliveTime减小到你getPoolSize的频率时,可能才能正确判断。并且如果使用ThreadPoolExecutor,对于池中的线程,你无法针对某一个线程进行操作。我的感觉,你现在的需求不符合使用线程池的需求,你需要的是一个线程管理类而不是池。 如果我正确理解你的问题的话,可以说你的问题和线程池无关Thread.join();参考http://www.java2s.com/Tutorial/Java/0160__Thread/Usingjointowaitforthreadstofinish.htm java.util.concurrent.CyclicBarrier一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用。牢记一点:当要解决任何线程问题时,优先考虑api提供的工具。 java.util.concurrent.ThreadPoolExecutor有三个方法getActiveCountgetCompletedTaskCountgetTaskCount具体意思你看下就知道了。当activecount为0的时候就全部执行完毕了。可以做一个定时任务去检查就行了。 hibernate.cfg.xml中自动配置映射文件 求助hibernate 一个简单一对一联系问题 关于java订阅者-发布者的代码实现 网站打开首页时如何读取数据库里面的数据 关于socket 关于jspsmartupload组件下载的问题 看看你行不行 用java做ERP会不会有些功能实现不了(各位大虾指点一下)? struts标签<html:messages>当中的name属性问题 菜鸟,初写连接数据库的程序,报错不知道如何解决帮忙(附代码) 请问高手这是那几个lib包冲突了? 开发的时候遇到的js的问题高分求高手来
Thread.join();
参考
http://www.java2s.com/Tutorial/Java/0160__Thread/Usingjointowaitforthreadstofinish.htm
一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用。牢记一点:当要解决任何线程问题时,优先考虑api提供的工具。
有三个方法
getActiveCount
getCompletedTaskCount
getTaskCount
具体意思你看下就知道了。
当activecount为0的时候就全部执行完毕了。可以做一个定时任务去检查就行了。