BlockingQueue इंटरफेस Java.util.concurrent पैकेज का हिस्सा है। BlockingQueue विशेष रूप से प्रोड्यूसर-कंज्यूमर कतारों के लिए डिज़ाइन किया गया है और कलेक्शन का भी समर्थन करता है। यह इंटरफेस कतार पर किए जा सकने वाले सभी प्रकार के ऑपरेशन का समर्थन करने के लिए चार भागों में विभाजित है। यह नल कीज़ स्वीकार नहीं करता। ArrayBlockingQueue और LinkedBlockingQueue दोनों BlockingQueue इंटरफेस को लागू करते हैं।
ArrayBlockingQueue और LinkedBlockingQueue दोनों तत्वों को FIFO क्रम में संग्रहीत करते हैं। दोनों कतारों में तत्व का सम्मिलन हमेशा कतार के टेल पर होता है और तत्व का निष्कासन हमेशा कतार के हेड से होता है।
| क्र. सं. | मुख्य बिंदु | ArrayBlockingQueue | LinkedBlockingQueue |
|---|---|---|---|
| 1 | बेसिक | यह सरणी द्वारा समर्थित है | यह लिंक्ड लिस्ट द्वारा समर्थित है |
| 2 | बाउंडेड | यह बाउंडेड सरणी कतार है। इसलिए एक बार बनाने के बाद, क्षमता को बदला नहीं जा सकता | यह अनबाउंडेड कतार है |
| 3 | थ्रूपुट | इसका थ्रूपुट लिंक्ड कतारों की तुलना में कम है | लिंक्ड कतारों का थ्रूपुट सरणी-आधारित कतारों की तुलना में अधिक है |
| 4 | लॉक | यह सिंगल-लॉक डबल कंडीशन एल्गोरिदम का उपयोग करता है | इसमें तत्व डालने के लिए putLock और कतार से तत्व हटाने के लिए takeLock है |