Ho una domanda. Nella mia applicazione, ho un servlet il cui codice di inizializzazione è il seguente.Metodo inizial servlet con blocco sincronizzato
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....
}
}
NOTA: In web.xml quanto sopra servlet sta avendo load-on-startup come 1, in modo da otterrà inizializzato al momento della messa in servizio l'applicazione.
quindi la mia domanda è perché stiamo sincronizzando il metodo init. Dopotutto sarà curato dal servlet container e verrà chiamato una sola volta. Posso rimuovere il processo di sincronizzazione sopra o ci sarà un certo impatto sull'applicazione dopo aver rimosso questo.
Questo potrebbe aiutarti: http://stackoverflow.com/questions/7826452/servelt-thread-pool-vs-servlet-instance-pool-by-the-web-container – Uooo