अधिकांश स्थितियों में जब आप अनुरोधों को संभालने में कुछ बाहरी संसाधन/स्थिति को अवरुद्ध कर रहे हैं या प्रतीक्षा कर रहे हैं। इस मामले में आप कोई काम किए बिना थ्रेड (इसलिए बहुत सारी मेमोरी) पर कब्जा कर रहे हैं।
सर्वलेट 3.0 के साथ आप उपलब्ध थ्रेड से कहीं अधिक समवर्ती कनेक्शन की सेवा कर सकते हैं। एक ऐसे अनुप्रयोग के बारे में सोचें जो सीमित थ्रूपुट वाली फ़ाइलों को डाउनलोड करता है। अधिकांश समय आपके धागे निष्क्रिय होते हैं क्योंकि वे डेटा के अगले हिस्से को भेजने की प्रतीक्षा कर रहे हैं। सामान्य सर्लेट में आप अपने HTTP थ्रेड की संख्या से अधिक क्लाइंट की सेवा नहीं कर सकते हैं, भले ही अधिकांश समय ये धागे निष्क्रिय/सो रहे हों।
सर्वलेट 3.0 में आपके पास कुछ HTTP थ्रेड वाले हजारों कनेक्टेड क्लाइंट हो सकते हैं। Tenfold increase in server throughput with Servlet 3.0 asynchronous processing इस सवाल से प्रेरित: Restrict download file bandwidth/speed in Servlet
startAsync द्वारा बनाई धागा है किसी भी तरह सस्ता आप मेरे लेख में एक वास्तविक दुनिया उदाहरण मिल सकते हैं?
startAsync
द्वारा कोई धागा नहीं बनाया गया है! यह सिर्फ सर्वलेट कंटेनर को बताता है: हे, हालांकि doGet
/doPost
विधि समाप्त हो गई, मुझे इस अनुरोध के साथ नहीं किया गया है, कृपया को बंद न करें। यह पूरा बिंदु है - आप शायद प्रत्येक एसिंक अनुरोध के अनुसार नया धागा नहीं बनायेगा। यहां एक और उदाहरण है - आपके पास हजारों ब्राउज़र comet का उपयोग करके स्टॉक मूल्य परिवर्तन के लिए प्रतीक्षा कर रहे हैं। मानक servlets में इसका मतलब होगा: हजारों निष्क्रिय धागे कुछ घटना के लिए इंतजार कर रहे हैं।
सर्वलेट 3.0 के साथ आप ArrayList
या कुछ कतार में प्रतीक्षा कर रहे सभी एसिंक्रोनस अनुरोधों को केवल रख सकते हैं। जब स्टॉक मूल्य परिवर्तन आता है, तो इसे सभी ग्राहकों को एक के बाद भेजें। इस परिदृश्य में एक से अधिक धागे की आवश्यकता नहीं है - और सभी HTTP थ्रेड शेष संसाधनों को संसाधित करने के लिए स्वतंत्र हैं।
स्रोत
2012-04-08 20:33:53
धन्यवाद! यह समझ में आता है :) – Aivar
... लेकिन दुर्भाग्य से यह मेरे लिए अभी तक बिल्कुल स्पष्ट नहीं है। ऐसा लगता है कि मैं उलझन में आया क्योंकि उदाहरण के रूप में मैंने AsyncContext से सीखा। मैंने इसके बारे में एक और सवाल लिखा, शायद आप इसे भी देख सकें: http://stackoverflow.com/questions/10073392/whats-the-purpose-of-asynccontext-start-in-servlet-3-0 – Aivar