Методы wait(), notify(), и notifyAll() в классе Object используются для межпоточной синхронизации.
wait(): Останавливает текущий поток до тех пор, пока другой поток не вызоветnotify()илиnotifyAll().notify(): Пробуждает один из потоков, который вызвалwait()на том же объекте.notifyAll(): Пробуждает все потоки, ожидающие на этом объекте.
Обязательное условие:
Эти методы должны вызываться только внутри синхронизированного блока или метода, иначе будет выброшено исключение IllegalMonitorStateException.