2010-06-24 15 views
6

मेरे पास दो धागे हैं। पहला व्यक्ति लूप में मल्टीकास्ट सॉकेट के साथ डेटाग्राम भेजता है; दूसरा धागा लूप में मल्टीकास्ट सॉकेट के उसी उदाहरण का उपयोग करके डेटाग्राम प्राप्त करता है।जावा मल्टीकास्ट सॉकेट थ्रेडसेफ है?

ऐसा लगता है कि यह ठीक से काम कर रहा है, लेकिन मैं अभी भी संदेह में हूं।

क्या ये दो धागे मल्टीकास्ट सॉकेट के समान उदाहरण का उपयोग कर सकते हैं? क्या मल्टीकास्ट सॉकेट थ्रेडसेफ सम्मान में भेजता/प्राप्त करता है?

+0

मुझे संदेह है कि इससे कोई फर्क नहीं पड़ता कि सॉकेट मल्टीकास्ट है या नहीं। – sje397

+0

ठीक है। क्या दो थ्रेड एक ही सॉकेट का उपयोग/लिखने के लिए एक साथ कर सकते हैं? – Lopotun

उत्तर

6

दोनों भेजना और प्राप्त करना डेटाग्राम सॉकेट विधियां भेजने/प्राप्त करने वाले डेटाग्राम पैकेट पर सिंक्रनाइज़ किए जाते हैं। दूसरे शब्दों में यदि आप दो अलग-अलग धागे से भेजने और प्राप्त करने के लिए एक ही डेटाग्राम पैकेट का उपयोग कर रहे हैं, तो इन दो विधियों को सिंक्रनाइज़ किया जाएगा क्योंकि वे एक ही ऑब्जेक्ट को सिंक्रनाइज़ेशन टोकन के रूप में उपयोग करने जा रहे हैं।

DatagramSocket के स्रोत कोड को देखने के बाद इसे समझना बहुत आसान है।

+0

यह सब कुछ है। यदि मैं डेटाग्राम पैकेट के उसी उदाहरण का उपयोग करता हूं तो मैं दो अलग-अलग धागे से डेटाग्राम पैकेट को एक साथ भेज और प्राप्त नहीं कर सकता। – Lopotun

+0

नहीं, आप दो अलग-अलग धागे से डेटाग्राम पैकेट के एक ही उदाहरण को एक साथ भेजने और प्राप्त करने में सक्षम नहीं हैं। –

2

DatagramSocketis thread safe, MulticastSocket एक व्युत्पन्न वर्ग, परिणाम में MulticastSocket.send के बाद से पहुँच एक synchronized block से धारावाहिक की जा रही है, धागा सुरक्षित है।

+0

ठीक है, लिंक वास्तव में कहता है कि डेटाग्रामसेट थ्रेडसेफ है। हालांकि, मैं डेटाग्राम सॉकेट स्रोत को देखने की पुष्टि नहीं कर सकता। – Lopotun

+0

जैसे ही बोरिस ने नीचे बताया, डेटाग्राम सॉकेट # लाइनों को 574-6 पर भेजें, आप देख सकते हैं कि भेजना (डेटाग्राम पैकेट) इसके तर्क पर सिंक्रनाइज़ किया गया है, जबकि संपूर्ण डेटाग्राम सॉकेट # प्राप्त विधि को सिंक्रनाइज़ के रूप में चिह्नित किया गया है। –

+0

ऊपर दिया गया लिंक केवल उन पोस्ट की एक प्रति है जो मूल रूप से सूर्य जावा फ़ोरम में बनाए गए थे। – EJP

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