Два потока взаимодействуют друг с другом с помощью методов ожидания, уведомления и уведомления. Поток, ожидающий обновления, отвечает за вызов метода ожидания, после чего поток немедленно переходит в состояние ожидания.

Поток, который отвечает за выполнение обновления, после выполнения обновления отвечает за вызов метода уведомления. ожидающий поток получит уведомление и продолжит выполнение с этим обновленным элементом.

wait(), notify() и notifyAll() присутствуют в классе Object, потому что класс потока вызывает эти методы из любого java-объекта.

Чтобы вызвать методы wait(), notify() и notifyAll() для любого объекта, поток должен быть владельцем этого объекта. то есть поток должен иметь блокировку этого объекта (поток должен находиться внутри синхронизированной области).

public final void wait() throws InterruptedException
public final void wait(long ms) throws InterruptedException
public final void wait(long ms, int ns) throws InterruptedException

public final native void notify()
public final native void notifyAll()

Проблема производителя-потребителя

производитель отвечает за создание элемента в очереди, а поток-потребитель отвечает за потребление элемента из очереди. если очередь пуста, то поток-потребитель вызовет метод ожидания и войдет в состояние ожидания после создания элемента в очереди. Поток-производитель отвечает за вызов метода уведомления, затем ожидающий поток-потребитель получит это уведомление и продолжит его выполнение с обновленным элементом.

Давайте подключимся к Github, LinkedIn, StackOverflow и моему Веб-сайту.