【发布时间】:2013-10-14 05:30:00
【问题描述】:
我的情况是,我有 4 组,每组 7 个线程。我的 CPU(核心 i7)应该能够处理 8 个线程,所以我正在考虑一次通过每个组,运行 7 个线程,然后移动到第二组,运行它的 7 个线程,然后是第三和第 4 组以同样的方式,然后从第 1 组开始,直到用户发送停止命令。
我的问题是,一旦每组 7 个线程完成处理,我应该让这些线程保持空闲状态,还是完全关闭它们并在下一次迭代时重新启动一组新的 7 个线程?哪种方法会更快?这是一个速度非常密集的应用程序,所以我需要一切都尽快发生。
我将使用FixedThreadPool 来管理每组 7 个线程。所以我可以只使用invokeAll(),然后让它们不管(大概是空闲),或者我可以shutdown()invokeAll() 之后的每个线程池,并在下一次迭代时启动一个新的线程池。
哪种方法会更快?
【问题讨论】:
-
我不明白,线程池应该能够为你处理所有细节
标签: java multithreading performance optimization threadpool