Справочники Java notify

Что такое notify в Java?

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


Основные моменты:

  1. Объект монитора:
    • notify() вызывается на объекте, который находится в режиме монитора. Это означает, что поток вызывающий notify() должен владеть монитором данного объекта.
  2. Разбуженный поток:
    • Вызов notify() будит один из потоков, ожидающих на объекте монитора. Какой именно поток будет разбужен, не определено, и зависит от реализации JVM.
  3. notifyAll():
    • В отличие от notify(), notifyAll() будит все потоки, ожидающие на объекте монитора.
class SharedResource {
    private boolean resourceAvailable = false;

    synchronized void acquireResource() {
        while (!resourceAvailable) {
            try {
                // Поток ожидает, пока ресурс не станет доступным
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("Resource acquired by: " + Thread.currentThread().getName());
    }

    synchronized void releaseResource() {
        // Освобождение ресурса
        resourceAvailable = true;
        System.out.println("Resource released by: " + Thread.currentThread().getName());

        // Уведомление о том, что ресурс доступен
        notify();
    }
}
Комментарии
Добавить комментарий

Пока комментариев нет