将"init"中定义的servlet实例变量标记为"volatile"

rma*_*ski 4 java concurrency servlets

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

我知道"init"方法是由一个线程调用的,并且该变量将被另一个线程访问,因此它似乎是必要的.或者可能不是?是否有任何机制可以保证在"init"方法完成后,所有其他线程都可以看到实例变量的当前值?

JB *_*zet 5

servlet容器将确保servlet初始化与其调用之间存在内存障碍.你不应该做任何事情.

注意:我没有在规范中找到这样的要求,但我认为容器不能做到这一点.顺便说一句,在GenericServlet中,ServletConfig config由init方法初始化的实例变量未标记为volatile.