ए CyclicBarrier
चक्रीय है क्योंकि इसे रीसेट किए बिना पुन: उपयोग किया जा सकता है। Javadoc
एक तुल्यकालन सहायता है कि सभी के लिए धागे का एक सेट की अनुमति देता है से एक दूसरे को के लिए प्रतीक्षा एक आम बाधा बिंदु तक पहुँचने के। 0clकभी-कभी एक दूसरे के लिए प्रतीक्षा करने के लिए थ्रेड की एक निश्चित आकार वाली पार्टी से जुड़े कार्यक्रमों में साइक्लिक बार्बर्स उपयोगी हैं । बाधा को चक्रीय कहा जाता है क्योंकि प्रतीक्षा थ्रेड जारी होने के बाद इसे फिर से उपयोग किया जा सकता है।
तो सामान्य उपयोग में, एक बार सभी धागे एकत्र किए जाते हैं और बाधा टूट जाती है, यह स्वयं को रीसेट करता है और फिर से उपयोग किया जा सकता है।
Javadoc for reset()
पुनः निर्धारित करता है से
अपनी प्रारंभिक अवस्था में बाधा। यदि कोई भी पार्टियां वर्तमान में अवरोध पर प्रतीक्षा कर रही हैं, तो वे BrokenBarrierException
के साथ वापस आ जाएंगे। ध्यान दें कि ब्रेकेज के बाद रीसेट हो गया है अन्य कारणों से जटिल होने के लिए जटिल हो सकता है; धागे को किसी अन्य तरीके से पुनः सिंक्रनाइज़ करने की आवश्यकता है, और रीसेट करने के लिए एक चुनें। इसके बाद उपयोग के लिए एक नया बाधा बनाने के लिए बेहतर हो सकता है।
तो reset
किसी भी वर्तमान में प्रतीक्षा थ्रेड को BrokenBarrierException
फेंकने और तुरंत जागने का कारण बनता है। reset
का उपयोग तब किया जाता है जब आप बाधा को "तोड़ना" चाहते हैं।
नोट भी चेतावनी - एक बार धागे जबरन जागृत हो गए हैं, फिर से उन्हें सिंक्रनाइज़ करना मुश्किल है।
टीएल; डीआर: आपको सामान्य परिस्थितियों में reset()
का उपयोग करने की आवश्यकता नहीं है।
स्रोत
2014-06-08 09:24:05
'tricky'' से आपका क्या मतलब है? यह वही शब्द है जो जावाडोक से आता है जिसे मैं समझ नहीं पा रहा हूं। क्या इसका मतलब यह है कि ब्रेकेज को संभालने के बीच में बाधा को फिर से सिंक्रनाइज़ करना मुश्किल होता है ('रीसेट() 'के कारण), तो कुछ अन्य धागे इसके पास आते हैं और ... बाधा मांगते हैं? – Leo