2010-03-31 16 views

उत्तर

28

javadoc कहता है क्यों। SingleThreadModel कम भार संगामिति के लिए एक आसान समाधान के लिए की गई है, लेकिन यह भी है कि प्रबंधन नहीं किया:

ध्यान दें कि SingleThreadModel सभी धागा सुरक्षा के मुद्दों का समाधान नहीं करता। उदाहरण के लिए, सत्र गुण और स्थिर चर को अभी भी एकाधिक थ्रेड पर एकाधिक अनुरोधों पर एकाधिक अनुरोधों तक पहुंचा जा सकता है, भले ही सिंगल थ्रेड मॉडेल सर्वलेट का उपयोग किया जाता है। यह अनुशंसित है कि एक डेवलपर बजाय इस तरह के उपयोग एक उदाहरण चर के या कोड उन संसाधनों तक पहुँचने का ब्लॉक सिंक्रनाइज़ करने से परहेज के रूप में इस इंटरफेस को लागू करने, उन लोगों के मुद्दों को हल करने अन्य साधनों से लेते हैं।

यदि यह प्राप्त नहीं किया जा सकता है, तो इसका उपयोग नहीं किया जाना चाहिए।

11

यह मूल रूप से समेकन को संभालने का एक खराब तरीका है। राज्य को अपने सर्वलेट से बाहर ले जाएं, ताकि एक ही सर्वलेट को कई धागे द्वारा समवर्ती रूप से उपयोग किया जा सके। सर्वलेट उदाहरणों के "पूल" में राज्य को रखते हुए, जिनमें से प्रत्येक पिछले अनुरोध आदि से छोड़ा गया राज्य बहुत भयानक है।

1

जावा सर्वलेट युक्ति से:

            SingleThreadModel इंटरफ़ेस गारंटी देता है कि एक समय में केवल एक धागा एक दिया सर्वलेट उदाहरण की सेवा विधि में निष्पादित करेंगे का उपयोग। यह ध्यान रखना महत्वपूर्ण है कि यह गारंटी केवल प्रत्येक सर्वलेट उदाहरण पर लागू होती है, क्योंकि कंटेनर ऐसे ऑब्जेक्ट्स को पूल करना चुन सकता है। ऑब्जेक्ट्स जो एक से अधिक सर्वलेट उदाहरण पर एक समय में पहुंच योग्य हैं, जैसे कि HttpSession के उदाहरण, पर विशेष रूप से एकाधिक सर्वलेट्स पर उपलब्ध हो सकते हैं, जिनमें सिंगल थ्रेड मॉडल लागू किया गया है।
            यह अनुशंसित है कि एक डेवलपर ऐसे एक उदाहरण चर के उपयोग से बचने या कोड उन संसाधनों तक पहुँचने का ब्लॉक सिंक्रनाइज़ करने के रूप में इस इंटरफेस को लागू करने, के बजाय उन मुद्दों को हल करने अन्य साधनों से लेते हैं। सिंगल थ्रेड मॉडेल इंटरफेस विनिर्देश के इस संस्करण में बहिष्कृत है।

4

हाँ सिंगल थ्रेड मॉडेल इंटरफ़ेस को बहिष्कृत किया गया है। इसका प्रयोग न करें। वास्तव में आपको इसकी आवश्यकता नहीं है, इसके बजाय ऑब्जेक्ट फ़ील्ड के बजाय स्थानीय चर का उपयोग करें क्योंकि "प्रत्येक थ्रेड को जावा में स्थानीय चर की अपनी प्रति प्राप्त होती है। ऑब्जेक्ट फ़ील्ड को हटाकर और इसे स्थानीय चर के साथ बदलकर, यह विशेष थ्रेडिंग समस्या सुलझ गया है।" Reference

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