我有一个servlet,它共享对Map<的访问权限。 String,InnerObject> ,将InnerObject声明为:
public class InnerObject {
volatile EnumObject obj; //declared volatile because can be accessed by different threads of the servlet
//.......(Methods that change the status of the obj
}
并将servlet声明为:
public class TestServlet {
Map<String, InnerObject> map;
public void doGet(..) {
//change the value of the map and the inner objects
}
}
当我尝试访问InnerObjects的值时,我从servlet得到一个缓慢的答案。如果我将地图更改为&#34; Volatile&#34;太:
volatile Map<String, InnerObject> map;
,我从http请求得到更快的答案。
在这种情况下是否需要挥发性?当仅在内部对象中定义volatile时,为什么它会变慢?