जावा में वेक्टर द्वारा क्या मतलब है थ्रेड सुरक्षित और सिंक्रनाइज़ किया गया है, यह थ्रेड सुरक्षित कैसे बनाया जाता है। मैं कार्यान्वयन के आंतरिक विवरण देख रहा हूंजावा में वेक्टर में सिंक्रनाइज़ेशन
उत्तर
विधियों को synchronized
के रूप में चिह्नित किया गया है। Synchronized Method tutorial देखें।
Vector
को 'थ्रेड-सुरक्षित' माना जाता है क्योंकि वेक्टर के आंतरिक भाग को सिंक्रनाइज़ किया जाता है। add()
, get()
, size()
, आदि जैसे तरीके सभी सिंक्रनाइज़ किए गए हैं कि Vector
की आंतरिक संरचना में संशोधन और उस आंतरिक संरचना तक पहुंच को अलग-अलग धागे द्वारा संसाधित नहीं किया जा सकता है।
इसे सिंक्रनाइज़ किए जाने वाले सभी तरीकों की योग्यता के द्वारा "थ्रेड-सुरक्षित" बनाया गया है (सिंक्रनाइज़ किए गए कीवर्ड के माध्यम से), OpenJDK source code देखें।
सिंक्रनाइज़ किए गए कीवर्ड क्या करता है यह एक ही थ्रेड को एक ही समय में सिंक्रनाइज़ किए गए तरीकों को निष्पादित करने से रोकता है। यह आंतरिक रूप से एक ताला का उपयोग कर रहा है, कि उन तरीकों में प्रवेश करते समय एक थ्रेड प्राप्त करना होता है, और जब यह विधि छोड़ देता है तो थ्रेड रिलीज़ होता है।
ध्यान दें कि यह वास्तव में बहुत मदद नहीं करता है, क्योंकि यह वेक्टर की असंगत आंतरिक स्थिति को रोकता है, लेकिन यह उच्च स्तर पर एक स्थिरता के स्तर की गारंटी नहीं देता है (एक आवेदन के लिए एक उपयोगी स्तर)।
// BROKEN CODE, needs external synchronization
// only add an element if the vector is empty
if(vector.isEmpty())
vector.add(anElement);
कृपया जावा एपीआई से नीचे अंश लगता है:
इस उदाहरण से पता चलता है कि आप अभी भी अपने आवेदन कोड में तुल्यकालन उपयोग करने के लिए (ताकि आप बस के रूप में अच्छी तरह से इस्तेमाल हो सकता है अनसिंक्रनाइज़्ड ArrayList) की जरूरत पर विचार करें
सबसे पहले, एक ही ऑब्जेक्ट पर एक दूसरे ऑब्जेक्ट पर सिंक्रनाइज़ किए गए तरीकों के दो आमंत्रणों के लिए संभव नहीं है। जब एक थ्रेड किसी ऑब्जेक्ट के लिए एक सिंक्रनाइज़ विधि को निष्पादित कर रहा है, तो अन्य सभी थ्रेड जो ऑब्जेक्ट के साथ पहले थ्रेड किए जाने तक उसी ऑब्जेक्ट ब्लॉक (निष्पादन को निलंबित) के लिए सिंक्रनाइज़ किए गए तरीकों का आह्वान करते हैं।
दूसरा, जब एक सिंक्रनाइज़ विधि बाहर निकलती है, तो यह स्वचालित रूप से एक ही ऑब्जेक्ट के लिए एक सिंक्रनाइज़ विधि के किसी भी बाद के आमंत्रण के साथ होता है। यह गारंटी देता है कि वस्तु की स्थिति में परिवर्तन सभी धागे के लिए दृश्यमान हैं।
- 1. जावा में सिंक्रनाइज़ेशन कैसे काम करता है?
- 2. जावा: नेस्टेड सिंक्रनाइज़ेशन ब्लॉक
- 3. जावा थ्रेड्स सिंक्रनाइज़ेशन
- 4. जावा सिंक्रनाइज़ेशन डीबगिंग
- 5. जावा में std :: वेक्टर के समतुल्य?
- 6. जावा में "इस" या निजी ऑब्जेक्ट पर सिंक्रनाइज़ेशन?
- 7. निर्देशिका सिंक्रनाइज़ेशन के लिए जावा लाइब्रेरी की तलाश में
- 8. आईओएस में पता पुस्तिका सिंक्रनाइज़ेशन
- 9. जावा: Arrays और वेक्टर
- 10. जावा वेक्टर सरणीसूची
- 11. जावा थ्रेड सिंक्रनाइज़ेशन, सर्वोत्तम समवर्ती उपयोगिता, ऑपरेशन
- 12. जावा अज्ञात वर्ग और सिंक्रनाइज़ेशन और "यह"
- 13. जावा: संख्याफॉर्मैट के साथ सिंक्रनाइज़ेशन समस्या?
- 14. जावा कन्वर्ट ऑब्जेक्ट [] वेक्टर
- 15. सी # में वेक्टर, दिशा (इकाई वेक्टर), प्वाइंट
- 16. एमवीसीसी कार्यान्वयन में लॉकलेस रीडर/राइटर सिंक्रनाइज़ेशन
- 17. जावास्क्रिप्ट में वेक्टर ग्राफिक्स?
- 18. Arduino में वेक्टर
- 19. एंड्रॉइड में वेक्टर ग्राफिक्स
- 20. iText पीडीएफ में वेक्टर ग्राफिक्स
- 21. जावा में मल्टीथ्रेडिंग में अस्थिर बनाम सिंक्रनाइज़ेशन का उपयोग कब करें?
- 22. ऑब्जेक्ट सिंक्रनाइज़ेशन
- 23. सिंक्रनाइज़ेशन एल्गोरिदम
- 24. थोड़ा वेक्टर (बिटसेट) (जावा में) को कैसे कार्यान्वित करें?
- 25. आंतरिक सिंक्रनाइज़ेशन
- 26. IMAP सिंक्रनाइज़ेशन
- 27. जावा में वेक्टर में स्ट्रिंग सरणी में सभी आइटम कैसे जोड़ें?
- 28. एमपीआई (सी ++) में वेक्टर उपयोग
- 29. पायथन में संक्षिप्त वेक्टर जोड़ना?
- 30. Matlab में वेक्टर (प्रिंट) वेक्टर कैसे प्रदर्शित करें?
+1 लेकिन आपको सही करना चाहिए "सिंक्रनाइज़ किए गए कीवर्ड क्या करता है यह एक ही समय में विधि को निष्पादित करने से एक से अधिक धागे को रोकता है"। यह केवल उस विशिष्ट विधि तक पहुंच नहीं है जो अवरुद्ध है। – Fredrik
@ फ्र्रेडिक: धन्यवाद। मैंने वाक्य को ठीक करने के बिना वाक्य को ठीक करने की कोशिश की। मुझे लगता है कि एक लंबे स्पष्टीकरण के लिए एक लिंक क्रम में होगा। – Thilo
क्या मुझे यह सही लगता है, कि आपके द्वारा प्रदान किए गए कोड में 'वेक्टर' को 'vector.add (anElement) से पहले बदल दिया जा सकता था (खाली नहीं हो सकता था;'? – soshial