我设置了一个ForkJoinPool来使用我的一半CPU:
ForkJoinPool forkJoinPool = new ForkJoinPool(
Runtime.getRuntime().availableProcessors() / 2);
但是,当我提交诸如there所述的合并排序之类的作业时,该池最多使用80%以上的机器CPU。
这是预期的吗?如果是这样,有没有办法有效地限制工作线程的数量?
答案 0 :(得分:1)
过多的线程问题可以追溯到早期的Java7。您没有指定您正在使用的版本,但无论如何,Java7和Java8都存在类似的过多线程问题。 Java8u40解决了嵌套调用中的一些过多问题,但代价是过度旋转。
自2011年以来,我一直在撰写对此框架的持续批评.Java8的文章是here其中有第一篇(Java7)和8u40文章的链接。
专门回答您的问题:没有办法限制使用此框架的工作线程。