2012-10-04 18 views
20

मैं शोध कर रहा हूं कि जावामेल थ्रेडसेफ है, विशेष रूप से विभिन्न उपयोगकर्ताओं के अनुरूप कई सत्रों, कई एसएमटीपी सर्वर और एमआईएमई संदेश बनाने और transport.sendMessage विधि के उपयोग के साथ कई स्थितियों के साथ स्थिति में। मुझे पता है कि जावमेल डेस्कटॉप-उपयोग की ओर उन्मुख है जो मुझे संदेह करता है कि यह थ्रेडिंग के साथ दिमाग में नहीं बनाया गया हो सकता है, और मुझे आश्चर्य है कि किसी के पास ऐसा अनुभव है या नहीं।जावामेल में थ्रेडसाफ्टी

उत्तर

53

मान्य रूप से जावामेल के लिए थ्रेड सुरक्षा नियम अच्छी तरह से प्रलेखित नहीं हैं, लेकिन उम्मीद है कि वे अधिकतर आप जो अपेक्षा करेंगे उससे मेल खाते हैं।

एकाधिक धागे सत्र का उपयोग कर सकते हैं।

चूंकि एक परिवहन मेल सर्वर से कनेक्शन का प्रतिनिधित्व करता है, और केवल एक ही थ्रेड एक समय में कनेक्शन का उपयोग कर सकता है, एक परिवहन थ्रेड सुरक्षा को बनाए रखने के लिए एकाधिक थ्रेड से एक्सेस सिंक्रनाइज़ करेगा, लेकिन आप वास्तव में केवल उपयोग करना चाहते हैं यह एक धागे से है।

इसी प्रकार, एक स्टोर को कई धागे द्वारा उपयोग किया जा सकता है, लेकिन अंतर्निहित कनेक्शन तक पहुंच सिंक्रनाइज़ और सिंगल थ्रेडेड होगी।

एक संदेश को केवल एक ही थ्रेड द्वारा संशोधित किया जाना चाहिए, लेकिन एकाधिक धागे एक संदेश को सुरक्षित रूप से पढ़ने में सक्षम होना चाहिए (हालांकि यह स्पष्ट नहीं है कि आप ऐसा क्यों करना चाहते हैं)।

आशा है कि मदद करता है ...

+0

क्या आपने अनुभव से, जवाडोक, स्रोतों से यह सीख लिया था? – ewernli

+32

मैंने बहुत सारे कोड लिखे और मैं इसे सब कुछ बनाए रखता हूं। –

+2

कुडोस! चूंकि आपकी व्याख्याओं का समर्थन करने के कोई संदर्भ नहीं थे, इसलिए मैं सोच रहा था कि आप इतने जोरदार कैसे हो सकते हैं। अब मैं समझता हूं;) स्पष्ट रूप से, +1! – ewernli

1

javamail डिस्पैचर धागे यदि सर्वर समय में जवाब नहीं है समय-समाप्त हुआ प्रतीत नहीं होता है। यह सभी उपलब्ध धागे पर लॉकिंग की ओर जाता है।

1.4.3 & 1.4.5 दोनों के साथ इस व्यवहार का परीक्षण किया।