你可以在方法中声明synchronized啊
public synchronized static void method()...;

解决方案 »

  1.   

    呵呵。。如果不想导致脏读又想用静态方法,那么就只好把它声明为同步方法了(同楼上),不过这样的后果是执行效率降低。但是,如果不调用静态成员变量的话,是不会导致脏读的。如果处理逻辑复杂,同步的时候cpu开销将会很大,这种情况下还不如用类实例方法。
      

  2.   

    1、用同步,效率低。
    2、不用静态方法,每个需调用的方法建立对象,再调用。这种方法也存在同步问题,但你的sychronized加在操作共享变量的语句部分,就不会太影响效率。如下:aa(){//第一种方法是在前面写sychronized;
    ....
    ...
    //sychronized{//第二种方法把同步用在这儿;
    //操作共享变量的语句;
    //}同步结束;
    ...
    ...  
    }
      

  3.   

    一般只有在多线程的时候才会产生脏读问题。非多线程的话是不需要考虑的。使用实例方法的话,只要不是在同一个实例中同时调用,就不会造成脏读。在不同的类实例里面调用另一个类里面的非静态成员函数,那么每一个调用请求都需要先实例化一个目的类实例,每个类实例都有独立的内存空间,这样是不会脏读的。如果你想得到更加明确的大案或者研究更深层次的问题可以参考《java编程思想》,第二版的时候有专门的“多线程”一章,到第三版的时候变成“并发”一章了。内容基本一样的。
      

  4.   

    牺牲内存?还是牺牲cpu时间?鱼与熊掌不可得兼,设计程序的时候需要根据实际需要和性能瓶颈的实际所在好好斟酌。:)
      

  5.   

    to  wingtrace(暮寒.烟灰.风化物) ,
    多谢. 在什么情况下在同一个实例中同时调用?