Довідники 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();
    }
}
Коментарі
Додати коментар

Поки що коментарів немає