हाय प्रत्येकाला तुम्हाला जावा डेव्हलपर बद्दल माहित आहे, आणि जर तुम्ही कधी जावा मध्ये क्लासिक उत्पादक-ग्राहक समस्या वापरली असेल, तर तुम्ही जावा सिंक पॅकेजमध्ये ब्लॉकिंग क्यू क्लास बद्दल ऐकू शकता. जावामधील इंटरस्टेलर कम्युनिकेशनसाठी निम्न-स्तरीय प्रतीक्षा-कोड सूचनेशिवाय हा एक अतिशय उपयुक्त धडा आहे. ब्लॉकिंग क्यू: जावा मध्ये, जावा 1.5 मध्ये इतर विविध समांतर उपयुक्त वर्ग जोडले गेले आहेत, जसे की: समवर्ती हॅश मॅप:,
गणनेसाठी Semalt, CopyOnWriteArrrayList:

ब्लॉकिंग क्यू: हा एक अद्वितीय प्रकारचा संग्रह आहे जो केवळ घटक साठवत नाही तर ब्लॉकिंग क्यू पूर्ण किंवा रिक्त असल्यास ब्लॉक समाविष्ट करून प्रवाह नियंत्रणास समर्थन देतो. घ्या () रांग रिकामी असल्यास BlockingQueue पद्धत अवरोधित केली जाईल և ठेवा () पद्धत: ब्लॉकिंग क्यू: रांग भरली असल्यास ब्लॉक केले जाईल.

हे वैशिष्ट्य BlockingQueue ला अंमलबजावणीसाठी एक आदर्श पर्याय बनवते उत्पादक-ग्राहक डिझाइनचे उदाहरण जिथे एक धागा ब्लॉकिंग क्यू मध्ये एक घटक घालतो आणि दुसरा धागा त्याचा वापर करतो.

या जावा ट्युटोरियलमध्ये आपण जाणून घेऊ की जावामध्ये ब्लॉकिंग क्यू काय आहे आणि ते कसे वापरावे. ब्लॉकिंग क्यू:, ArrayBlockingQueue: आणि LinkedBlockingQueue: its त्याच्या काही संभाव्य गुणधर्म.

जावा मध्ये ब्लॉकिंग क्यू ची संभाव्य वैशिष्ट्ये

संग्रहात कोणताही नवीन वर्ग वापरण्यापूर्वी, उदाहरणार्थ ब्लॉकिंग क्यू:, त्याबद्दल अधिक जाणून घेण्यासाठी मी नेहमी त्यांचे API दस्तऐवज वाचतो. नेहमी लक्षात ठेवण्यासाठी काही मुद्दे आहेत – नवीन संग्रह संच वापरताना संभाव्य प्रोग्रामिंग त्रुटी टाळण्यासाठी. खालील आयटमच्या सूचीसाठी: ब्लॉकिंग क्यू: जावा तुम्हाला अधिक जाणून घेण्यास मदत करेल – ते समजून घ्या.

1) ब्लॉकिंग क्यू: जावा मध्ये अवैध घटकांना परवानगी देत ​​नाही, भिन्न अंमलबजावणी ब्लॉकिंग क्यू: जसे: ArrayBlockingQueue:, LinkedBlockingQueue: फेकणे NullPointerException:
जेव्हा तुम्ही रांगेत शून्य जोडण्याचा प्रयत्न करता.
ब्लॉकिंग क्यू:<स्ट्रिंग:>: bQueue =: नवीन: ArrayBlockingQueue:<स्ट्रिंग:>:(10:);
//bQueue.put(null); // NullPointerException – जावा मधील ब्लॉकिंग क्यू शून्य होऊ देत नाही

bQueue =: नवीन: LinkedBlockingQueue:<स्ट्रिंग:>:();
bQueue.ठेवा:(रिक्त);

अपवाद: एका रांगेत “मुख्य”
जावा.इंग्रजी:.NullPointerException:
जावा मध्ये.उपयुक्त:.स्पर्धक.LinkedBlockingQueue:.ठेवा:(LinkedBlockingQueue:.जावा::288:)

2) ब्लॉकिंग क्यू: मर्यादित किंवा अमर्यादित असू शकते. मर्यादित: ब्लॉकिंग क्यू: प्रारंभिक शक्ती և कॉलसह आरंभ केलेला आहे ठेवा () अवरोधित केले जाईल जर: ब्लॉकिंग क्यू: पूर्ण आकार शक्तीच्या समान आहे. हा प्रतिबंधात्मक स्वभाव अनेक तारांमधील सामान्य अनुक्रम सर्वात सामान्य म्हणून वापरणे आदर्श बनवते जावा मध्ये ग्राहक उपाय तयार करणे.

अमर्यादित वळण हे असे आहे जे शक्तीशिवाय आरंभ केले जाते, खरं तर ते डीफॉल्टनुसार आरंभ केले जाते संपूर्ण. MAX_VALUE:.

सर्वात सामान्य उदाहरण ब्लॉकिंग क्यू: वापरते मर्यादित ब्लॉकिंग क्यू: खालील उदाहरणात दाखवल्याप्रमाणे.

ब्लॉकिंग क्यू:<स्ट्रिंग:>: bQueue =: नवीन: ArrayBlockingQueue:<स्ट्रिंग:>:(2:);
bQueue.ठेवा:(“जावा”);
प्रणाली:.बाहेर:.छापलेले(“आयटम 1 ब्लॉकिंग क्यूवर पोस्ट केला”);
bQueue.ठेवा:(“जेडीके”);
प्रणाली:.बाहेर:.छापलेले(“आयटम 2 ब्लॉकिंग क्यू वर पोस्ट केला”);
bQueue.ठेवा:(“J2SE”);
प्रणाली:.बाहेर:.छापलेले(“झाले”);

परिणाम:
साहित्य: 1: मध्ये घातले: ब्लॉकिंग क्यू:
साहित्य: 2: पोस्ट केले आहे ब्लॉकिंग क्यू:

हा कोड फक्त Java և JDK मध्ये स्थापित केला जाईल ब्लॉकिंग क्यू: J2SE घटक 3 त्याच्या आकारामुळे स्थापित करताना ते अवरोधित केले जाईल ब्लॉकिंग क्यू: येथे 2 आहेत:

3: ब्लॉकिंग क्यू: अशा सिद्धी ArrayBlockingQueue:, LinkedBlockingQueue, आणि प्राधान्य ब्लॉकिंग प्रश्न: आहेत: धाग्यांसह सुरक्षित. सर्व रांगा पद्धती अणू क्रिया करण्यासाठी समांतर नियंत्रण և अंतर्गत लॉक वापरतात.

पासून ब्लॉकिंग क्यू: संकलन, मोठ्या प्रमाणात भरती उपक्रम देखील वितरीत करते, जसे की: addAll (), सर्व () समाविष्टीत आहे एक होईपर्यंत अणू पद्धतीद्वारे केले जात नाही ब्लॉकिंग क्यू:

अंमलबजावणी विशेषतः समर्थन करते. तर फोन करा सर्व जोडा () अनेक वस्तू ठेवल्यानंतर अयशस्वी होऊ शकते.

4) सामान्य पद्धती ब्लॉकिंग क्यू: आहे: ठेवा () आणि घ्या () त्या जावा मध्ये ब्लॉक करण्याच्या पद्धती items आयटम ठेवण्यासाठी वापरले receive प्राप्त करण्यासाठी ब्लॉकिंग क्यू: जावा मध्ये. ठेवा () अवरोधित केले जाईल जर: ब्लॉकिंग क्यू: पूर्ण आहे घ्या () अवरोधित केले जाईल जर: ब्लॉकिंग क्यू: रिक्त आहे, कॉल करा घ्या () खालील उदाहरणात दाखवल्याप्रमाणे रांगेच्या डोक्यावरून आयटम काढून टाकतो.
ब्लॉकिंग क्यू:<स्ट्रिंग:>: bQueue =: नवीन: ArrayBlockingQueue:<स्ट्रिंग:>:(2:);
bQueue.ठेवा:(“जावा”); // ऑब्जेक्ट ब्लॉकिंग क्यू मध्ये ठेवा
प्रणाली:.बाहेर:.छापलेले(“BlockingQueue स्थापित केल्यानंतर.” + bQueue:);
bQueue.घेणे(); // जावा मधील ब्लॉकिंग क्यू कडून ऑब्जेक्ट पुनर्प्राप्त करा
प्रणाली:.बाहेर:.छापलेले(“BlockingQueue घेतल्यानंतर.” + bQueue:);

परिणाम:
ब्लॉकिंग क्यू: घालल्यानंतर. [Java]
ब्लॉकिंग क्यू: घेतल्यानंतर. []

५) ब्लॉकिंग क्यू: इंटरफेस विस्तारत आहे संग्रह:, रांग आणि न सांगता येणारा एक इंटरफेस जो सर्व काही प्रदान करतो संग्रह: आणि रांग: संबंधित पद्धती जसे: विनंती (), आणि इथे बघ (), याउलट घ्या (), इथे बघ () पद्धत न काढता रांगेचे डोके परत करते, मतदान () तो և घेतो the डोक्यातून वस्तू काढून टाकतो, परंतु निर्दिष्ट वेळेपर्यंत थांबू शकतो जर: रांग: रिक्त आहे.

ब्लॉकिंग क्यू:<स्ट्रिंग:>: BQueue शी संबंधित = नवीन: LinkedBlockingQueue:<स्ट्रिंग:>:(2:);
BQueue शी संबंधित.ठेवा:(“जावा”); // ऑब्जेक्ट ब्लॉकिंग क्यू मध्ये ठेवते
प्रणाली:.बाहेर:.छापलेले(“दृष्टीक्षेपापूर्वी ब्लॉकिंग क्यू आकार.” + BQueue शी संबंधित.आकार:());

प्रणाली:.बाहेर:.छापलेले(“Peking () BlockkingQueue मधील उदाहरण.” + BQueue शी संबंधित.दिसत());
प्रणाली:.बाहेर:.छापलेले(“एका दृष्टीक्षेपात ब्लॉकिंग क्यू आकार.” + BQueue शी संबंधित.आकार:());
प्रणाली:.बाहेर:.छापलेले(“ब्लॉकिंग क्यू वर पोल () वर कॉल करा:” + BQueue शी संबंधित.सर्वेक्षण:());
प्रणाली:.बाहेर:.छापलेले(“क्वेरी नंतर ब्लॉकिंग क्यू आकार.” + BQueue शी संबंधित.आकार:());

परिणाम:
आकार: ब्लॉकिंग क्यू: डोळ्यांसमोर. 1:
देखाव्याचे उदाहरण() मध्ये: ब्लॉकिंग क्यू:: जावा:
आकार: ब्लॉकिंग क्यू: एक नजर नंतर. 1:
सर्वेक्षण करणे() वर: ब्लॉकिंग क्यू:: जावा:
आकार: ब्लॉकिंग क्यू: सर्वेक्षणानंतर. 0:



6) दुसरी संभाव्य पद्धत ब्लॉकिंग क्यू: हे जावा मध्ये आहे
इतर क्षमता () आणि ऑफर (), खोलीचे उर्वरित क्षेत्र परत करते ब्लॉकिंग क्यू:, जे अवरोधित न करता पूर्ण केले जाऊ शकते आणि नंतर शक्य असल्यास ऑब्जेक्ट घाला possible शक्य असल्यास सत्य परत करा failure अपयशाच्या बाबतीत, विपरीत जोडा () पद्धत जी: फेकणे
बेकायदेशीर राज्य अपवाद: जर एखादी वस्तू तेथे ठेवण्यात अयशस्वी झाली ब्लॉकिंग क्यू:. वापरा: ऑफर () पूर्ण जोडा () जेथे शक्य.




वापरात आहे ब्लॉकिंग क्यू: जावा मध्ये

अनेक सर्जनशील उपयोग असू शकतात ब्लॉकिंग क्यू: जावा मध्ये, प्रवाह व्यवस्थापित करण्याची क्षमता दिली आहे. मला प्रोग्रामर दिसणाऱ्या दोन सर्वात सामान्य मार्गांपैकी एक ब्लॉकिंग क्यू: निर्माता ग्राहक डिझाईन उदाहरणाची अंमलबजावणी करणे आवश्यक आहे Java जावामध्ये बाउंडेड बफर स्थापित करा. हे आश्चर्यकारकपणे कोडित आहे सामान्य ऑब्जेक्टवर इंटरकनेक्शन कम्युनिकेशन खुप सोपे.

ArrayBlockingQueue: आणि LinkedBlockingQueue: जावा मध्ये

ArrayBlockingQueue: आणि LinkedBlockingQueue: सामान्य अंमलबजावणी आहेत ब्लॉकिंग श्रेणी: इंटरफेस:
ArrayBlockingQueue: वस्तुमान प्रदान
आणि
रांग: FIFO म्हणून कमांड सेट करते.


रांगेचा प्रमुख हा काळातील सर्वात जुना घटक आहे आणि रांगेची शेपटी सर्वात तरुण घटक आहे. ArrayBlockingQueue: तसेच a निश्चित आकार बफर दुसरीकडे LinkedBlockingQueue: कनेक्टेड नोड्सच्या वर बांधलेली पर्यायी प्रतिबंधित रांग आहे. बँडविड्थच्या दृष्टीने, LinkedBlockingQueue: अॅरेपेक्षा जास्त बँडविड्थ प्रदान करतेब्लॉकिंग क्यू: जावा मध्ये.

एवढेच आहे ब्लॉकिंग क्यू: जावा मध्ये – ते कसे वापरावे. आम्ही त्याची दोन सोयीस्कर अंमलबजावणी पाहिली ब्लॉकिंग क्यू: ते आहे ArrayBlockingQueue: आणि LinkedBlockingQueue: जे जावा API सह येते.

इतर: जावा संग्रह शिकवण्या जावा विकासकांसाठी