我试图在Java程序中执行忙碌旋转,并希望防止编译器或JIT优化代码。代码是一个简单的循环:
for (int i = 0; i < spins; i++) { }
其中spins是输入。我怎样才能防止这段代码被优化掉呢?
rsaldnfx1#
Thread.onSpinWait()就是为了这个目的而设计的。文档甚至显示了一个示例:
Thread.onSpinWait()
volatile boolean eventNotificationNotReceived; void waitForEventAndHandleIt() { while (eventNotificationNotReceived) { Thread.onSpinWait(); } readAndProcessEvent(); }
1条答案
按热度按时间rsaldnfx1#
Thread.onSpinWait()
就是为了这个目的而设计的。文档甚至显示了一个示例: