我正在尝试在 Java 程序中执行繁忙的旋转,并希望防止编译器或 JIT 优化代码。该代码是一个简单的循环:
for (int i = 0; i < spins; i++) {
}
其中 spin 是输入。
如何防止这段代码被优化掉?
Thread.onSpinWait()
就是为此目的而设计的。 文档甚至显示了一个示例:
volatile boolean eventNotificationNotReceived;
void waitForEventAndHandleIt() {
while (eventNotificationNotReceived) {
Thread.onSpinWait();
}
readAndProcessEvent();
}