用信号量Semaphore实现互斥锁Mutex
百度广告
import java.util.concurrent.Semaphore;
public class Mutex ...{
s.acquire();
public void release()...{
}
return s.tryAcquire(ms);
}
上面的代码只能在java5中编译通过,因为Semaphore是在java5中才提供的。我在读上面的代码时有疑问。因为如果错误的连续调用release两次,然后两个线程都调用acquire,岂不是这两个线程都可以同时运行,从而违背了互斥锁的定义?为了证明我的猜测,写了如下的代码:
public class TestMutex ...{
Mutex mutex=new Mutex();
mutex.release();
new MyThread(mutex).start();
}
}
class MyThread extends Thread...{
this.mutex=mutex;
try ...{
} catch (InterruptedException e1) ...{
}
System.out.print(i);
try ...{
} catch (InterruptedException e) ...{
}
}
}
该程序的输出
从而证实了我的猜测。
编辑推荐:
温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)
点击加载更多评论>>