मेरे पास एक प्रश्न है। मेरे आवेदन में, मेरे पास एक सर्वलेट है जिसका init कोड नीचे जैसा है।सर्वलेट इनिट विधि जिसमें सिंक्रनाइज़ ब्लॉक है
public class GameInitServlet extends HttpServlet {
private static boolean initialized = false;
@Override
public void init() throws ServletException {
// This is a safeguard against running init() more than once.
synchronized (GameInitServlet.class) {
if (initialized) {
LOG.error("GameInitServlet has already been initialized... Bailing out!");
return;
}
initialized = true;
}
//some code here....
}
}
नोट: web.xml में ऊपर सर्वलेट 1 के रूप में लोड-ऑन-स्टार्टअप चल रहा है, तो यह स्टार्टअप एप्लिकेशन के समय में प्रारंभ हो जाएगी।
इसलिए मेरा सवाल यह है कि हम इनिट विधि को सिंक्रनाइज़ क्यों कर रहे हैं। आखिरकार इसे सर्वलेट कंटेनर द्वारा ख्याल रखा जाएगा और केवल एक बार बुलाया जाएगा। क्या मैं उपरोक्त सिंक्रनाइज़ेशन प्रक्रिया को हटा सकता हूं या इसे हटाने के बाद एप्लिकेशन पर कुछ प्रभाव पड़ेगा।
यह आपकी मदद कर सकता है: http://stackoverflow.com/questions/7826452/servelt-thread-pool-vs-servlet-instance-pool-by-the-web-container – Uooo