是否有必要将所有 servlet 实例变量标记为“volatile”(或从同步部分访问它们)?包括那些在“init”方法中定义的,之后没有修改的?
我的理解是“init”方法被一个线程调用,而该变量会被另一个线程访问,所以看起来很有必要。或者可能不是?是否有任何机制可以保证在“init”方法完成时实例变量的当前值对所有其他线程可见?
最佳答案
servlet 容器将确保在 servlet 的初始化和它们的调用之间存在内存屏障。你不应该做任何事情。
注意:我没有在规范中找到这样的要求,但我认为容器不这样做是失败的。顺便说一句,在GenericServlet中,init方法初始化的实例变量ServletConfig config
没有被标记为volatile。
关于java - 将 "init"中定义的 servlet 实例变量标记为 "volatile",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11719916/