Java大约有100个并行线程,内存管理

Mar*_*rco 9 java multithreading memory-management scheduling

我正在编写一个优化算法,它创建了大约100个线程.目前,我一次启动它们(for循环),之后我告诉每个线程它应该加入().

我的问题是现在每个线程使用大量内存,因此堆空间异常不会花费很长时间.我想要某种调度,但不知道如何实现它.

我有类似这样的事情:开始10个线程,每次完成其中一个完成新线程.因此,总是一直运行10个线程,直到没有线程被留下.

有人有想法或知道如何实现这样的事情吗?

非常感谢您和科隆的问候

马尔科

Mic*_*rdt 19

使用具有适当最大池大小的ThreadPoolExecutor.


rle*_*eir 1

考虑您将使用的机器中的核心数量。如果通常运行的线程数等于核心数,则性能最佳。正如 KLE 所说,使用线程池。

  • 如果您完全受 CPU 限制,这可能是正确的,但如果存在任何阻塞操作(例如 IO、休眠、某些类型的锁定),那么您通常需要比内核更多的线程,以保持内核得到充分利用。 (4认同)