实现自定义java屏障

Upv*_*ote 5 java concurrency

我想实现自定义java屏障.我不想使用CyclicBarrier类.

所以所有线程都在一个共同点上相遇.只有当所有线程都到达屏障时,线程才会被触发.

我想使用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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

mer*_*ike 3

有点家庭作业,所以我只是给出一个提示:

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