Concurrency Orta

wait/notify kuyruklarından BlockingQueue'ya

Elle yazılan üretici-tüketici koordinasyonunu BlockingQueue ile değiştirin.

✕ 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);
Bu kodda bir sorun mu gördünüz? Bize bildirin.
🛡

Daha güvenli koordinasyon

Kuyruk kilitleme ve koşul sinyalleşmesini üstlenir.

👁

Net amaç

put() ve take() üretici-tüketici davranışını doğrudan ifade eder.

🎛

Yerleşik politikalar

Sınırlı kapasite, adalet, zaman aşımı veya bloklamayan işlemler seçin.

Eski Yaklaşım
Manuel wait ve notify
Modern Yaklaşım
BlockingQueue
JDK'dan itibaren
5
Zorluk
Orta
wait/notify kuyruklarından BlockingQueue'ya
Mevcut

JDK 5'ten (2004) itibaren geniş çapta kullanılabilir

Doğru wait/notify kodu, paylaşılan bir monitör, koşul döngüleri, eşleşen bildirimler ve dikkatli kesme (interrupt) işleme gerektirir. BlockingQueue bu kuralları kapsüller ve üretici-tüketici iş akışları için bloklayan, zaman aşımlı ve bloklamayan işlemler sunar. put() ve take() gibi çağrılar kesilebilir olmaya devam eder.