【发布时间】:2023-03-08 15:57:01
【问题描述】:
使用Executors.newFixedThreadPool(int nThreads) 是减少创建过多线程的开销的好方法,但如果所有线程都在等待另一个作业,而另一个作业本身正在等待池中的空闲线程,则它可能会导致死锁。有时问题可以通过使用多个线程池来解决,但有时却不能。我正在寻找行为类似于newFixedThreadPool 的东西,除非所有池线程都被阻塞 - 在这种情况下,尽管池有预定义的界限,但池应该会增长。 有这样的吗?
实际上,这里的死锁并不那么重要。真正的问题是“如何管理 running 线程的数量”而不是它们的总数。当试图在不创建不必要的线程的情况下充分利用 CPU 时,这也很有趣。
【问题讨论】:
标签: java threadpool