Sobes.tech
Junior — Middle

Jakie główne metody klasy Object są używane do pracy z przepływami i synchronizacją?

sobes.tech AI

Odpowiedź od AI

W Javie klasa Object udostępnia kilka metod, które są często używane podczas pracy z wątkami i synchronizacją:

  • wait() — powoduje, że bieżący wątek czeka, aż inny wątek wywoła notify() lub notifyAll() na tym samym obiekcie. Służy do organizowania oczekiwania na określony stan.

  • notify() — obudzi jeden wątek oczekujący na tym obiekcie.

  • notifyAll() — obudzi wszystkie wątki oczekujące na tym obiekcie.

Metody te powinny być wywoływane w obrębie zsynchronizowanego bloku lub metody, w przeciwnym razie zostanie rzucony IllegalMonitorStateException.

Przykład użycia:

synchronized (sharedObject) {
    while (!condition) {
        sharedObject.wait();
    }
    // Działania po spełnieniu warunku
}

// W innym wątku
synchronized (sharedObject) {
    // Zmiana stanu
    sharedObject.notify();
}