限制运行特定方法的线程数的最佳方法是什么?

Ser*_*hin 3 java concurrency multithreading

情况

  • 我有网络应用程序
  • 我上课做复杂的数学计算
  • 方程式可以不时地发生,具体取决于请求
  • 有时许多线程同时启动此计算
  • 当计算开始太多时,计算机将被挂起(完全冻结= 99 CPU使用率)

我的目标是

我的目标是避免悬挂/冻结.

我的猜测是可以通过限制同时计算的数量来完成(可能是NUMBER_OF_CPU_CORES - 1)

问题是

实现这一目标的最佳方式是什么?

我知道有java.util.concurrent.Semaphore,但也许有更好的方法?

小智 7

看看Java ThreadPoolExecutor 这应该有助于您尝试做什么.

希望这可以帮助...

  • +1 - 这是最好的方法,因为它避免了你编写一堆低级同步的东西. (2认同)