实现自定义java屏障

实现自定义java屏障,java,concurrency,Java,Concurrency,我想实现一个自定义java屏障。我不想用这个 因此,所有线程在一个公共点上相遇。只有当所有线程都到达屏障时,线程才会处理 我想使用wait/notify/notifyAll方法来实现屏障 这就是我想到的 public class Barrier{ private final int threadNumber; public Barrier(int pThreadNumber){ this.threadNumber = pThreadNumber; }

我想实现一个自定义java屏障。我不想用这个

因此,所有线程在一个公共点上相遇。只有当所有线程都到达屏障时,线程才会处理

我想使用wait/notify/notifyAll方法来实现屏障

这就是我想到的

public class Barrier{

    private final int threadNumber;

    public Barrier(int pThreadNumber){
        this.threadNumber = pThreadNumber;
    }

    public synchronized void barrier(){
        wait();
    }

    public synchronized void releaseBarrier(){
        notifyAll();
    }

    public synchronized void releaseThread(){
        notify();
    }
}

但我真的不明白如何实现在所有线程到达之前停止一定数量的线程。是否可以只使用wait/notify/notify all来实现屏障?

这类作业,因此我只给出一个提示:


threadNumber
线程正在等待时,您希望所有线程继续。这相当于第一个
threadNumber-1
线程等待第
threadNumber
个线程到达。一种方法是计算线程数,并在
threadNumber
-th线程到达后执行一些特殊操作。

与Java细节相关的额外提示:在
wait()
上阻塞的线程可能会被错误唤醒;看


要容忍虚假唤醒,您需要一个
while
循环,其中简单逻辑只需要
if
检查或盲
等待()

这是家庭作业吗?或者您为什么不想使用CyclicBarrier呢?我只是尝试了解java线程和并发性,这听起来是一个值得学习的有趣练习