java.util.concurrent
पैकेज में पहले से ही बहुत अधिक कार्यान्वयन मौजूद हैं। जैसे - ArrayBlockingQueue
, DelayQueue
, LinkedBlockingQueue
, PriorityBlockingQueue
, SynchronousQueue
।
wait()
और notify()
को प्रतिस्थापित नहीं किया गया है। नई उपयोगिताएं पेश की गई हैं जो अतिरिक्त कार्यक्षमताओं और प्रदर्शन लाभ प्रदान करती हैं। उदाहरण के लिए java.util.concurrent.locks
पैकेज देखें।
मैं आपको this परिचय पढ़ने की सलाह दूंगा। यह एक उच्च अवलोकन प्रदान करता है जो आपके प्रश्न का उत्तर देना चाहिए।
चीयर्स।
संपादित करें 1: ठीक है, तो उदाहरण के लिए आप java.util.concurrent.locks .Lock
के एक कार्यान्वयन एक विपंक्ति आपरेशन कि बार-आउट लागू करने के लिए और उपयोग कर सकते हैं धागे कतार तक पहुँचने के लिए एक ही समय अनुदान निष्पक्षता में। इस तरह के कार्यान्वयन ReentrantLock
है जिसमें एक निर्माता है जो निष्पक्षता नीति स्वीकार करता है। समय tryLock()
इस संपत्ति का समर्थन करता है। इसके अलावा आप कतार, आदि पर प्रतीक्षा धागे की गिनती के लिए कुछ डिबगिंग समर्थन जोड़ सकते हैं। मुझे लगता है कि wait()
और notify()
के साथ बस इसे लागू करना अधिक कठिन होगा।
निष्कर्ष ReentrantLock
इसकी विस्तारित क्षमताओं में निम्न स्तर के समकक्षों की तुलना में "बेहतर" है। हालांकि मूल व्यवहार वही है। यदि आपको इन अतिरिक्त wait()
और notify()
की आवश्यकता नहीं है, तो अभी भी स्वीकार्य विकल्प हैं।
स्रोत
2011-02-06 07:36:15
मैं एक सिंक्रनाइज़ कतार लागू नहीं करता। मैं BlockingQueue के कई कार्यान्वयनों में से एक का उपयोग करता हूं: http://download.oracle.com/javase/6/docs/api/java/util/concurrent/BlockingQueue.html –
@ माइक - मैं नौकरी साक्षात्कार के लिए तैयारी कर रहा हूं । वास्तविक जीवन में, मैं पुनर्वित्त के बजाय मौजूदा कुछ का उपयोग करता हूं। – ripper234
तब मुझे डर है कि मैं सवाल समझ नहीं पा रहा हूं। सिंक्रनाइज़ किए गए ब्लॉक और प्रतीक्षा/अधिसूचना को java.util.concurrent पैकेज में कक्षाओं के रूप में उच्च-स्तरीय अबास्ट्रक्शन द्वारा प्रतिस्थापित किया गया है, न कि नई भाषा संरचनाओं द्वारा। यदि प्रश्न का इरादा java.util.concurrent कक्षाओं में से कुछ का उपयोग करना है, तो हमें किसके जवाब देने से बाहर रखा गया है? –