Concurrency Intermédiaire

Remplacez la coordination producteur-consommateur écrite à la main par BlockingQueue.

✕ 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.
🛡

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
Files wait/notify vers BlockingQueue
Disponible

Disponible depuis JDK 5 (2004)

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.