我的情况是我有 4 组,每组 7 个线程。我的 CPU(核心 i7)应该能够处理 8 个线程,所以我正在考虑一次通过每个组,运行 7 个线程,然后移动到第二组,运行它的 7 个线程,然后是第三和第 4 组以同样的方式,然后从第 1 组开始,直到用户发出停止命令。
我的问题是,一旦每组 7 个线程完成处理,我应该让这些线程空闲,还是完全关闭它们并在下一次迭代时重新启动一组新的 7 个线程?哪种方法会更快?这是一个速度非常密集的应用程序,所以我需要一切都尽快发生。
我将使用 aFixedThreadPool
来管理每组 7 个线程。所以我可以只是invokeAll()
然后不理会它们(大概是空闲的),或者我可以shutdown()
在每个invokeAll()
线程池之后在下一次迭代中启动一个新的线程池。
哪种方法会更快?