很不幸的是在我学习了操做系统以后,发现一下代码有错误。。我会更正 java
由于要用到互斥锁,可是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(); } }