Junior — Middle
Est-ce que des mécanismes tels que synchronized, wait et notifyAll sont utilisés en pratique pour gérer les threads?
sobes.tech IA
Réponse de l'IA
Oui, en pratique de programmation Java, les mécanismes synchronized, wait et notifyAll sont utilisés pour gérer les threads, en particulier lorsque vous devez implémenter une synchronisation et une coordination de bas niveau entre les threads.
- synchronized est utilisé pour assurer une exclusion mutuelle lors de l'accès aux ressources partagées.
- wait() fait attendre le thread actuel, en libérant le moniteur, jusqu'à ce qu'un autre thread appelle notify() ou notifyAll().
- notifyAll() réveille tous les threads en attente sur cet objet.
Cependant, dans les applications modernes, on utilise souvent des outils de niveau supérieur du paquet java.util.concurrent (par exemple, Lock, Semaphore, CountDownLatch), car ils sont plus flexibles et plus pratiques.
Exemple d'utilisation de synchronized, wait et notifyAll :
class SharedResource {
private boolean ready = false;
public synchronized void waitForReady() throws InterruptedException {
while (!ready) {
wait();
}
// continuer le travail
}
public synchronized void setReady() {
ready = true;
notifyAll();
}
}