Java servlet中的共享对象是否需要volatile?

时间:2015-08-25 11:58:14

标签: java performance volatile

我有一个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时,为什么它会变慢?

0 个答案:

没有答案