【发布时间】:2013-05-08 09:10:38
【问题描述】:
我有一个问题。在我的应用程序中,我有一个 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 容器处理,并且只被调用一次。 能不能把上面的同步过程去掉,不然去掉后会对应用有一些影响。
【问题讨论】: