我需要知道,是否有一些框架可以为我提供这种功能。我在一种方法中有一个关键部分,而我几乎不需要其他方法,直到该关键部分执行并完成。如果关键部分未处于活动状态,则这些方法应有效。

如果仅在信号量方法中没有线程时才输入关键部分。

如:

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

08-05 01:03