Files wait/notify vers BlockingQueue
Remplacez la coordination producteur-consommateur écrite à la main par BlockingQueue.
Comparaison de Code
✕ Manual wait and notify
synchronized (queue) {
while (queue.isEmpty()) {
queue.wait();
}
Job job = queue.removeFirst();
process(job);
}
✓ BlockingQueue
BlockingQueue<Job> queue = new LinkedBlockingQueue<>(); Job job = queue.take(); process(job);
Un problème avec ce code ? Dites-le nous.
Pourquoi la méthode moderne gagne
Coordination plus sûre
La file gère le verrouillage et la signalisation des conditions.
Intention claire
put() et take() expriment directement le comportement producteur-consommateur.
Politiques intégrées
Choisissez une capacité bornée, l'équité, des délais ou des opérations non bloquantes.
Ancienne Approche
wait et notify manuels
Approche Moderne
BlockingQueue
Depuis JDK
5
Difficulté
Intermédiaire
Support JDK
Files wait/notify vers BlockingQueue
Disponible
Disponible depuis JDK 5 (2004)
Comment ça fonctionne
Un code wait/notify correct nécessite un moniteur partagé, des boucles de condition, des notifications correspondantes et une gestion soigneuse de l'interruption. BlockingQueue encapsule ces règles et fournit des opérations bloquantes, temporisées et non bloquantes pour les flux producteur-consommateur. Les appels comme put() et take() restent interruptibles.
Documentation Associée
Preuve