我需要知道,是否有一些框架可以为我提供这种功能。我在一种方法中有一个关键部分,而我几乎不需要其他方法,直到该关键部分执行并完成。如果关键部分未处于活动状态,则这些方法应有效。
如果仅在信号量方法中没有线程时才输入关键部分。
如:
public class Worker {
private Critical critical = null;
private CriticalDependent dep1 = null;
private CriticalDependent dep2 = null;
public Worker() {
critical = new Critical();
dep1 = critical.registerDependent();
dep2 = critical.registerDependent();
}
public void critical() {
critical.enter();
critical.waitForClearToGo();
// protected unique code
// change resource handle etc
critical.exit();
}
public void dependent1() {
critical.checkWaitAndUnsetClearToGo(this.dep1);
// some dependent code
// use resource handle
critical.setClearToGo(this.dep1);
}
public void dependent2() {
critical.checkWaitAndUnsetClearToGo(this.dep2);
// some dependent code
// use resource handle
critical.setClearToGo(this.dep2);
}
}
我可以找出一些解决方案,但我更喜欢使用现有框架。我找不到现有的。先感谢您。
最佳答案
使用标准的Java Semaphore。