在doug lea的那本着名的《java并发编程—设计原则与模式》,英文名" concurrent programming in java™: design principles and patterns, second edition",书中提到可以用信号量semaphore实现互斥锁mutex。虽然java中是通过synchronize关键字提供锁,并用这个基础设施实现信号量的。在有的系统中只有信号量这一原语,锁是通过信号量实现的。代码如下:
import java.util.concurrent.semaphore; public class mutex ...{ private semaphore s = new semaphore(1); public void acquire() throws interruptedexception ...{ s.acquire(); } public void release()...{ s.release(); } public boolean attempt(int ms) throws interruptedexception ...{ return s.tryacquire(ms); } }