我有一个自旋等待循环,它正忙于等待设置标志。但是,它可能需要 很多发生这种情况的时间——几分钟,甚至几小时。
会Thread.sleep()比 Thread.onSpinWait() 更有效率?
最佳答案
在这种情况下, sleep 和自旋锁都不是您想要的。 sleep 是错误的选择,因为你不知道你需要提前睡多久。执行某种自旋锁循环是错误的,因为自旋锁是繁忙的等待,因此会消耗 CPU 周期,并且仅适用于非常短的等待,因为预期资源会很快变得可用。您在这里要做的是设置一个信号量。让线程 1 等待线程 2 设置信号量。
关于java - Thread.sleep() 与 Thread.onSpinWait,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51215310/