我在JDK 1.8.0_40中使用ForkJoinPool时遇到了一个奇怪的问题,而只需恢复到1.8.0即可解决问题,而无需更改代码。
代码获取runnables列表,使用ForkJoinTask.adapt()将它们转换为ForkJoinTask列表 对于每个列表,我使用一个封闭的ForkJoinTask,它在exec()方法的列表中调用ForkJoinTask.invokeAll()。 (https://jsfiddle.net/9wbranL3/4/)
我看到的问题是,偶尔调用此ForkJoinTask会无限期地阻塞。我确实看到其他线程在运行,但调用了#34;调用"卡住了。
比较jdk 1.8.0和1.8.0_40的来源我看到ForkJoinPool.java和ForkJoinTask.java有很多变化
此更改是否有任何文档?任何可能导致问题的原因是什么?
(我使用的JVM版本是Java Hotspot 64位服务器VM版本25.40-b25)
编辑:也许这种变化是原因? https://github.com/mich8bsp/forkjoinpool-reproducer