我在每个页面请求上都有一个servlet实例化的类。该类有一个静态初始化器、一个静态变量,其余的包含非静态公共或私有成员、构造函数等。
这安全吗?我不希望调用静态初始化程序,而是在servlet的整个生命周期中只调用一次。
利用Tomcat。据我所知,每次类被一个类加载器加载时,静态初始化器都会被调用。基于我的需求,这应该是我(使用tomcat)关心的问题吗?
发布于 2014-08-23 09:25:47
没有任何问题,除非您修改了静态变量,因为它将被所有请求共享。如果您根据该变量进行任何决策,则会出现并发问题。
静态初始化在类加载时进行,因此只会发生一次。
发布于 2014-08-23 09:28:06
除非您在这个第二类中维护状态,否则您不应该担心实例化的数量。静态初始化器可以很好地使用。要执行“一生中只有一次”的行为,没有困难的方法。
有很多简单的黑客可以把你的独生子女变成一吨重,所以我不担心。如果您是一个顽固的狂热者,那么使用Spring或Pico,只在第二类中保持状态,只与servlet进行无状态的对话,一切都会好的。
https://stackoverflow.com/questions/25460400
复制相似问题