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