Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 标记“中定义的servlet实例变量”;init";作为「;易挥发;_Java_Servlets_Concurrency - Fatal编程技术网

Java 标记“中定义的servlet实例变量”;init";作为「;易挥发;

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

是否有必要将所有servlet实例变量标记为“volatile”(或从同步部分中访问它们)?包括那些在“init”方法中定义的,并且之后没有修改的


我知道“init”方法由一个线程调用,而变量将由另一个线程访问,因此这似乎是必要的。也许不是?是否有任何机制可以保证当“init”方法完成时,实例变量的当前值将对所有其他线程可见?

servlet容器将确保servlet的初始化和调用之间存在内存障碍。你不应该做任何事


注:我还没有在说明书中找到这样的要求,但我认为这是一个失败的容器不这样做。顺便说一句,在GenericServlet中,由init方法初始化的实例变量
ServletConfig
没有标记为volatile。

检查
GenericServlet
的功能是一个好主意。