写一个Java有限自旋锁
时间: 2024-05-16 19:12:39 浏览: 91
Java锁之自旋锁详解
5星 · 资源好评率100%
以下是一个简单的Java有限自旋锁实现:
```java
public class LimitedSpinLock {
private volatile boolean locked = false;
private int maxTries;
public LimitedSpinLock(int maxTries) {
this.maxTries = maxTries;
}
public void lock() {
int tries = 0;
while (locked) {
if (tries >= maxTries) {
Thread.yield();
} else {
++tries;
}
}
locked = true;
}
public void unlock() {
locked = false;
}
}
```
这个实现中,有一个`locked`变量来表示锁的状态,`lock()`方法中,如果锁被占用,则进行自旋,最多自旋`maxTries`次,如果超过了这个次数,则使用`Thread.yield()`方法,让出CPU资源,让其他线程执行,以避免无限自旋占用CPU资源。`unlock()`方法中,将`locked`变量置为`false`,表示锁被释放。
阅读全文