在死代码消除的情况下是否捕获了具有副作用的空循环?



给定以下代码

var cachedInt = new ArrayBlockingQueue<Integer>(xxxxx);
while(true){
while(cachedInt.offer(randomProvider.nextInt()));
latch.await();
}

jvm 最终会消除 while 循环,因为它没有主体,还是识别条件的副作用并保持循环到位?

不,jvm 不会"优化"你的方法调用。您的病情将反复运行,直到返回 false,副作用将正常发生。

最新更新