संभव डुप्लिकेट:
एक प्रकार की
enum वर्ग की तरहसार्वजनिक प्रकार की टाइप करें {एक, दो, तीन, चार}क्या
type.values () सरणी धागा एकलूप के लिएमें उपयोग करने के लिए सुरक्षित है, जैसे एक स्थिर विधि में? उदाहरण के लिए:सार्वजनिक स्थिर शून्य प्रक्रिया () (के लिए (प्रकार प्रकार: type.values ()) {// कुछ करें}}इसके अलावा , यदि कोई इन मानों के किसी भी सबसेट के साथ एक स्थिर सरणी चर परिभाषित करता है, तो क्या यह धागा सुरक्षित पढ़ा के लिए होगा? उदाहरण के लिए: <प्री>
सार्वजनिक स्थिर अंतिम प्रकार [] टाइप = नया प्रकार [] {TWO, THREE}; सार्वजनिक स्थिर शून्य प्रक्रिया () (के लिए (प्रकार प्रकार: टाइप) {// कुछ करें}}दोनों ही मामलों में,
प्रक्रिया () विधि का हो सकता हैप्रकारenum औरप्रकार सरणी की परिभाषा की तुलना में एक अलग वर्ग के लिए।इसके अलावा,
टाइप सरणी कोप्रकारenum में एक बार परिभाषित किया जा सकता है और उसenum की एक स्थिर विधि द्वारा लौटा दिया जा सकता है।तो, उपरोक्त दिया गया है, अगर एकाधिक धागे
प्रक्रिया () विधि एक साथ चल रहे हैं, तो कोड को धागा सुरक्षित (कम से कम सिर्फtypes < कोड> सरणी)
दूसरों ने पहले ही बताया है कि
मान () विधि, इसलिए यह धागा सुरक्षित है।हालांकि, अपने दूसरे प्रश्न का उत्तर देने के लिए:
यदि कोई इन मानों के किसी भी उपसंच के साथ एक स्थिर सरणी चर परिभाषित करता है, तो वह थ्रेड सुरक्षित हो?
नहीं कोई भी
सार्वजनिक स्थिर सरणी सुरक्षित नहीं है, क्योंकि सरणी तत्व हमेशा अस्थिर होते हैं। यही है, किसी भी धागे कोटाइप [0] को किसी भी अन्यप्रकार में बदल सकता है, जो कई थ्रेडों की उपस्थिति में सुरक्षित नहीं है - या वास्तव में यहां तक कि एकल-सूची & lt; टाइप करें & gt; को उजागर करने के लिए बेहतर होगा, जिसे बाद में सुरक्षित रूप से अपरिवर्तनीय बनाया जा सकता है (उदाहरण के लिएCollections.unmodifiableList () का उपयोग करना )।
Comments
Post a Comment