我有一个问题。在我的应用程序中,我有一个 servlet,其初始化代码如下。
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 中,上述 servlet 的 load-on-startup 为 1,因此它将在启动应用程序时进行初始化。
所以我的问题是为什么我们要同步 init 方法。毕竟它将由 servlet 容器处理,并且只被调用一次。我可以删除上述同步过程还是删除后会对应用程序产生一些影响。