Junior — Middle
Cosa succede al flusso se, all'interno di un metodo contrassegnato come synchronized, si chiama il metodo wait() sull'oggetto corrente?
sobes.tech AI
Risposta dell'AI
Se all'interno di un metodo contrassegnato dalla parola chiave synchronized si chiama il metodo wait() sull'oggetto corrente, il thread:
- Rilascia il monitor (blocco) dell'oggetto, permettendo ad altri thread di entrare nel blocco o metodo sincronizzato.
- Passa allo stato di attesa (
wait), fino a quando un altro thread non chiamanotify()onotifyAll()sullo stesso oggetto.
In questo modo, wait() sospende temporaneamente l'esecuzione del thread corrente e rilascia il monitor, aiutando a evitare blocchi reciproci e a implementare un lavoro cooperativo tra thread.
Esempio:
synchronized(this) {
while (!condizione) {
wait(); // rilascia il monitor e attende la notifica
}
// codice che viene eseguito dopo il risveglio
}