我想实现自定义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来实现屏障?
有点家庭作业,所以我只是给出一个提示:
threadNumber您希望所有线程在线程等待时继续进行。这相当于第一个threadNumber - 1线程等待threadNumber第一个线程到达。一种方法是计算线程数,并在第threadNumber-th 线程到达后执行一些特殊操作。