Во-первых, это домашняя работа, поэтому я ищу только подсказки и указатели того, где, возможно, искать.
Я намерен создать несколько процессов и отправить их через барьер
Главное. java
for (int x=0; x!=threadCount+1; x++){
Process newThread = new Process(barrier, x, sleepTime);
newThread.run();
}
Процесс. java
public void run() {
try {
Thread.sleep(100 + sleepTime);
barrier.joinBarrier(this);
} catch (InterruptedException e) {
// do nothing
}
}
, а затем и мой барьер. java
public synchronized void barrier() throws InterruptedException{
wait();
}
public synchronized void releaseBarrier(){
notifyAll();
}
public void joinBarrier(Process p) throws InterruptedException {
System.out.println(p.getName() + " waiting on barrier");
if(blocking){
threadsWaiting++;
barrier();
releaseBarrier();
}
else{
System.out.println(p.getName() + " passed the barrier");
}
}
Возможно, мое понимание неверно но я ожидал, что первый поток будет ждать, затем второй поток будет ждать, однако мой вывод просто останавливается, поток всегда ожидает
Number of threads = 20
Barrier size = 10
Thread 0 waiting on barrier
Process finished with exit code -1
Я думаю, мое понимание того, как это должно работать, близко, но я что-то упустил Спасибо всем.