Java 标记“中定义的servlet实例变量”;init";作为「;易挥发;
是否有必要将所有servlet实例变量标记为“volatile”(或从同步部分中访问它们)?包括那些在“init”方法中定义的,并且之后没有修改的Java 标记“中定义的servlet实例变量”;init";作为「;易挥发;,java,servlets,concurrency,Java,Servlets,Concurrency,是否有必要将所有servlet实例变量标记为“volatile”(或从同步部分中访问它们)?包括那些在“init”方法中定义的,并且之后没有修改的 我知道“init”方法由一个线程调用,而变量将由另一个线程访问,因此这似乎是必要的。也许不是?是否有任何机制可以保证当“init”方法完成时,实例变量的当前值将对所有其他线程可见?servlet容器将确保servlet的初始化和调用之间存在内存障碍。你不应该做任何事 注:我还没有在说明书中找到这样的要求,但我认为这是一个失败的容器不这样做。顺便说一句
我知道“init”方法由一个线程调用,而变量将由另一个线程访问,因此这似乎是必要的。也许不是?是否有任何机制可以保证当“init”方法完成时,实例变量的当前值将对所有其他线程可见?servlet容器将确保servlet的初始化和调用之间存在内存障碍。你不应该做任何事
注:我还没有在说明书中找到这样的要求,但我认为这是一个失败的容器不这样做。顺便说一句,在GenericServlet中,由init方法初始化的实例变量
ServletConfig
没有标记为volatile。检查GenericServlet
的功能是一个好主意。