2013-05-11 8 views
13

मैं DatagramSocket के उदाहरण का उपयोग करने की योजना बना रहा हूं और अलग-अलग थ्रेड से send विधि को कॉल करता हूं ... विभिन्न ग्राहकों को यूडीपी पैकेट भेजने के लिए। विधि धागा सुरक्षित है यानी इस विधि को विभिन्न धागे से बुलाकर कोई परेशानी/असंगतता/दौड़ की स्थिति नहीं पैदा होगी?DatagramSocket.send धागा सुरक्षित है?

धन्यवाद!

उत्तर

9

यूडीपी गारंटी देता है कि डाटाग्राम बरकरार (सब पर हो) पहुंचें। दूसरे शब्दों में प्रेषक पर मल्टीथ्रेडिंग होने पर भी कोई अंतःक्रिया नहीं हो सकती है। आपको बस इतना ही चाहिए आपको वास्तव में थ्रेड सुरक्षा की आवश्यकता नहीं है। हालांकि सी भेजना() सिस्टम कॉल थ्रेड सुरक्षित है, सभी सिस्टम कॉल की तरह, क्योंकि वे परमाणु हैं।

+2

लेकिन क्या यह वास्तव में गारंटी देता है कि जावा रैपर थ्रेड सुरक्षित होगा? मेरे ख़्याल से नहीं। – turbanoff

+0

@turbanoff यह अप्रासंगिक है कि रैपर थ्रेड-सुरक्षित है या नहीं, क्योंकि यह किसी भी वस्तु में किसी भी राज्य को बदलने के लिए निर्दिष्ट नहीं है। – EJP

+0

मुझे आपकी राय नहीं मिली है। उदाहरण के लिए, SimpleDateFormat किसी भी ऑब्जेक्ट में किसी भी स्थिति को बदलने के लिए निर्दिष्ट नहीं है। लेकिन सभी जानते हैं - यह थ्रेड-सुरक्षित नहीं है। – turbanoff

8

हां। यह देशी ओएस पर केवल एक पतली परत है, जो थ्रेडसेफ है।

यहाँ देखें http://www.velocityreviews.com/forums/t150685-is-datagramsocket-thread-safe.html

+1

मैंने इसे देखा, लेकिन इसमें संदर्भों की कमी है! – giga

+0

बिल्कुल। यह सिर्फ सन जावा फोरम थ्रेड की एक प्रति है, जिसे मैंने 2006 में योगदान दिया था। एक मानक संदर्भ नहीं। – EJP

संबंधित मुद्दे