Я пытаюсь реализовать пользовательский пример Barrier
, чтобы узнать больше о параллелизме в Java. У меня есть работающий класс:
public class Barrier implements Runnable {
private static Semaphore barrier = new Semaphore(0);
private static int toWait = 5;
private static int counter = 0;
private static long sleepTime;
public static int ID = 0;
private int id = ++ID;
public Barrier(long sleep){
sleepTime = sleep;
}
@Override
public void run() {
try {
Thread.sleep(sleepTime);
counter++;
if (counter == toWait){
barrier.release(counter);
}
barrier.acquire();
System.out.println("Thread with sleep: " + id + " proceeds");
} catch (InterruptedException ex) {
Logger.getLogger(Barrier.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Затем в функции main
я создаю 5 потоков и запускаю их. После запуска я захожу в тупик, который не могу решить. Может кто-нибудь сказать мне, что я делаю не так?