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łanotify()lubnotifyAll()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();
}