很不幸的是在我学习了操作系统之后,发现一下代码有错误。。我会更正
因为要用到互斥锁,但是current包下没有提供Mutex锁,于是参见网上的实现用Semaphore实现了一个。不知道会不会有问题,各位拍拍
import java.util.concurrent.Semaphore;
import java.util.concurrent.atomic.AtomicBoolean;
public class Mutex {
private Semaphore s = new Semaphore(1);
private AtomicBoolean flag=new AtomicBoolean(true);
public void acquire() throws InterruptedException {
if(flag.getAndSet(false)){
s.acquire();
}
}
public void release() {
if(!flag.getAndSet(true)){
s.release();
}
}
public boolean attempt(int ms) {
return s.tryAcquire(ms);
}
public static void main(String[] args) throws InterruptedException {
Mutex m = new Mutex();
m.acquire();
m.release();
m.acquire();
m.release();
m.release();
m.acquire();
}
}