如定义了一个public的static变量aa。
A用户操作使aa变成了2;
再时B用户再操作就是使用aa变量的值2;
因为他是static的。改变一次后,以后就是使用第一次的值。应该怎么避免这种情况。

解决方案 »

  1.   

    操作这个变量的方法加synchronize
      

  2.   

    static变量就是这样啊如果你想根据用户不同存储不同的数据,为什么不用session
      

  3.   

    可以把这个变量放在一个类里面。然后声明为不是static的。然后在页面中创建一个session的类实例<jsp:useBean id="classId" class="package1.ClassName" scope="session"/>
    ClassName中包含aa这个变量就可以用这个类的set和get方法来访问了。
      

  4.   

    那你为什么要声明为static,你的用法明显与static背道而驰
      

  5.   

    如果你希望每个线程见到的变量值都不相同,可以使用ThreadLocal你调用的set(Object)只会在本线程中get回来,其它线程是无法获得A中set的值的
      

  6.   

    static本来就是设计成这样用的啊
      

  7.   

    设计问题。即public又static就不要可变。