wait()
и notify()
не предназначены для непосредственного использования, а представляют собой примитивы, которые лучше использовать библиотеки для низкоуровневой синхронизации.
Вам следует использовать механизм параллелизма более высокого уровня, например CountDownLatch
. Вы хотели бы использовать CountDownLatch
со значением 4. Пусть каждый из потоков вызывает метод countDown()
фиксатора, а тот, который вы хотите подождать, вызывает await()
.
private CountDownLatch rendezvousPoint = new CountDownLatch(4);
//wait for threads
rendezvousPoint.await();
//do stuff after rendezvous
//in the other 4 threads:
rendezvousPoint.countDown();