【发布时间】:2019-02-04 22:38:46
【问题描述】:
在我的代码中,我有一个包含静态最终变量的类
private static final ForkJoinPool pool = new ForkJoinPool(availableCPUs - 1);
我有一个长时间运行的任务提交到池中,这将占用所有 CPU 资源。提交的任何其他任务都将挂起。 但是,当我切换到创建一个公共池时
private static final ForkJoinPool pool = ForkJoinPool.commonPool();
所有任务都可以提交执行。
我只是想知道这两段代码之间有什么区别。 commonPool() 仍然调用new ForkJoinPool() 并传递availableCPUs - 1
我还注意到commonPool() 使用SafeForkJoinWorkerThreadFactory 类型的工厂,而new ForkJoinPool() 使用ForkJoinPool$DefaultForkJoinWorkerThreadFactory。这有关系吗?
非常感谢!
【问题讨论】:
标签: java multithreading forkjoinpool