【发布时间】:2015-12-12 15:02:56
【问题描述】:
我需要知道,是否有一些框架可以为我提供这种功能。我在一个方法中有一个关键部分,我需要很少的其他方法等到这个关键部分被执行和完成。如果临界区不活跃,这些方法应该可以流畅地工作。
如果只有在信号量方法中没有线程时才进入临界区。
如:
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 multithreading frameworks semaphore