通过ThreadPoolExecutors运行并发任务。由于我有2-3组任务要做,因此现在有一个ThreadPoolExecutors的地图,并且可以将一组任务发送给其中一个任务。线程池 - 为每个任务创建一个新的任务,检测完成一组任务
现在想知道当池已完成分配给它的所有任务。它的组织方式是我在掌握任务清单之前知道的,因此将它们发送到新构建的池中,然后计划开始合并/跟踪以了解何时完成所有任务。
一种方法是有另一个池1-2线程,即轮询其他池知道什么时候他们的队列为空。如果一些扫描显示它们为空(在轮询之间第二次睡眠,假设它们已完成)。
另一种方法是子类ThreadPoolExecutor
,保持跟踪通过队列,并在摆脱afterExecute(Runnable r, Throwable t)
这样可以确切地知道每个任务完成后,良好的显示状态,并知道什么时候都是完整的,如果一切顺利的移动。
有没有第二个的实现在哪里?有一个听众可以实现的接口会很好,然后将它们自己添加到子分类方法中。
也在寻找一个实现:
要问一个池超时内关闭,
如果一段时间后出关停不完整则叫
shutdownNow()
如果失败则获得线程工厂,并停止所有线程的组。 (假设我们设定的工厂,它使用一组或其他方式来获得一个参考,以它的线程)
基本上是以肯定的方式就可以了,清理水池,使我们可以有这在一个应用程序容器中运行。一些任务调用硒等,所以可以挂起线程。
最后沟将重新启动容器(Tomcat的/ JBoss的),但希望这种情况是不得已而为之。
的问题是 - 一个开源实现这个或任何代码,开始了的知道吗?
谢谢你Holger。我可以将它们全部放在一个池中,但许多优点是不同的客户端可以使用一个池,我可以为每个池设置一个线程的限制,因此一个客户端不会占用太多的资源。这是思路。这样可以关闭一个池而不影响其他池。 – tgkprog
Thread.stop是最后一招 - >像selenium这样的外部API连接到浏览器/外部UI并且不能依赖是我在过去两个月中看到的。 – tgkprog