Java 中可以使用 java.util.concurrent.atomic
包中的 AtomicInteger
类来实现自旋锁。例如:
AtomicIntegerlock = new AtomicInteger(1);
void acquireLock() {
while (!lock.compareAndSet(1, 0)) {
// busy wait
}
}
void releaseLock() {
lock.set(1);
}
这里的自旋锁使用了 Java 的原子变量来实现,通过调用 compareAndSet
方法来获取锁,当锁可用时,该方法会将锁的值从 1 更改为 0,并返回 true,否则返回 false。在释放锁时,只需要将锁的值设置为 1 即可。