Java线程,保持相同数量的线程运行

时间:2013-07-09 22:50:56

标签: java multithreading

我需要处理80个信息文件,我是通过8个线程的组来完成的,我想做的是总是运行8个线程(现在我有8个线程,然后是8个线程)完成他们的工作,产生另外8个,等等。

所以我想知道是否有办法解决这个问题:

  • 推出8个帖子。
  • 在1个线程完成其工作后,启动另一个线程(所以全部 时间我有8个线程在运行,直到工作完成)

2 个答案:

答案 0 :(得分:5)

为什么不使用thread pool,尤其是fixed size thread pool?将线程池大小配置为8个线程,然后将所有工作项提交为Runnable / Callable个对象。线程池将使用8个配置的线程执行这些。

答案 1 :(得分:3)

因此,每个人都快速进入并告诉您使用thread pool。当然,这是achieve你想要的正确方法。问题是,这是正确的想要吗?它并不像在问题中抛出一堆线程那么简单,而且神奇地解决了所有问题。

您尚未告诉我们处理的性质。作业I / O是绑定的,还是CPU绑定 1 ?如果它们受CPU限制,则为threads do nothing。如果它们是I / O绑定的,则线程可能帮助。

您还没有告诉我们您是否有八个核心(或计算单位)。如果你不能保证你会拥有它,那么运行八个线程可能不是最好的。

有很多值得思考的问题。您正在增加解决方案的复杂性。也许它会让你得到你想要的东西,也许不是。

1 :是的,你说你正在处理文件,但这并没有告诉我们。也许处理是密集的(想想:渲染视频文件)。或许你正在从一个非常快的磁盘上读取文件(想想:SSD或内存映射文件)。