Java 中的 Busy Spin:阻止编译器/JIT 优化

问题描述 投票:0回答:1

我正在尝试在 Java 程序中执行繁忙的旋转,并希望防止编译器或 JIT 优化代码。该代码是一个简单的循环:

for (int i = 0; i < spins; i++) {
}

其中 spin 是输入。

如何防止这段代码被优化掉?

java optimization jvm jit
1个回答
0
投票

Thread.onSpinWait()
就是为此目的而设计的。 文档甚至显示了一个示例:

volatile boolean eventNotificationNotReceived;

void waitForEventAndHandleIt() {
    while (eventNotificationNotReceived) {
        Thread.onSpinWait();
    }
    readAndProcessEvent();
}
© www.soinside.com 2019 - 2024. All rights reserved.