我遇到了一个奇怪的情况,在静态初始化程序中使用带有lambda的并行流似乎永远没有CPU使用率。这是代码:
class Deadlock {
static {
IntStream.range(0, 10000).parallel().map(i -> i).count();
System.out.println("done");
}
public static void main(final String[] args) {}
}
这似乎是此行为的最小再现测试用例。如果我:
将块放入main方法而不是静态初始化器中,
删除并行化,或
删除lambda,
代码立即完成。谁能解释这种行为?它是错误还是故意的?
我正在使用1.8.0_66-内部的OpenJDK版本。
手掌心
相关分类