2010-01-19 15 views
9

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

क्या कोई इसे समझा सकता है?

उत्तर

11

यदि अनुरोध सर्वलेट द्वारा क्रमशः संभाले गए थे, तो वेब अनुप्रयोग बहुत धीमे होंगे। वास्तव में यह मामला है कि servlets को थ्रेड-सुरक्षित होने की आवश्यकता है, क्योंकि एक सर्वलेट का एक उदाहरण एक साथ कई अनुरोधों को संभालने के लिए ज़िम्मेदार हो सकता है।

आमतौर पर एक वेब एप्लिकेशन कंटेनर अनुरोधों को संभालने के लिए थ्रेड पूल बनाए रखेगा, आने वाले अनुरोधों को ऑन-डिमांड आधार पर धागे को आवंटित किया जा रहा है।

+0

उत्तर डैनबेन के लिए अग्रिम धन्यवाद! लेकिन मेरे पास स्पष्टीकरण देने के लिए एक और चीज है। थ्रेड-सुरक्षित होने का मतलब है सर्वलेट में कोई आंतरिक स्थिति नहीं है। इसलिए पूल में मौजूद किसी भी सर्वलेट उदाहरण के समान राज्य है जैसा कि वे बनाए गए थे। क्या मैं सही हूँ? धन्यवाद! –

+2

कोई भी आंतरिक स्थिति वाला वर्ग थ्रेड-सुरक्षित है, लेकिन यह थ्रेड-सुरक्षित होने का एकमात्र तरीका नहीं है। थ्रेड-सुरक्षा स्वयं एक लंबी चर्चा है, लेकिन उदाहरण के लिए, आंतरिक स्थिति वाला एक वर्ग थ्रेड-सुरक्षित हो सकता है यदि यह अपने आंतरिक राज्य तक पहुंच को क्रमबद्ध करता है। – danben

+1

Servlets को भी थ्रेड सुरक्षित होना चाहिए क्योंकि वे अन्य servlets (ServletContext और HttpSession में संग्रहीत वस्तुओं) के साथ राज्य जानकारी साझा करते हैं –

1

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

0

हाँ, वहाँ एक इंटरफेस एकल थ्रेड मॉडल .it एक मार्कर इंटरफेस है। यह सर्वलेट सिंक्रनाइज़ किया गया है यानी एक समय में केवल एक थ्रेड ऑब्जेक्ट की सेवा करता है। लेकिन यह प्रतिक्रिया देरी जैसी समस्याएं पैदा करता है। समाधान के लिए वे ऑब्जेक्ट्स का पूल बनाते हैं लेकिन फिर पूल में भी सीमित आकार होता है। इसलिए का उपयोग करना बेहतर है सिंक्रनाइज़ ब्लॉक

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