public class test{ private static boolean flag= true; public static void remove() {
flag= false;
}

public test(){
if(test){
//请问调用remove()后立即调用test(), 在这里有同步问题吗?,多个实例操作会有问题吗?谢谢
                        //需要在flag上加volatile吗?
}
}
}

解决方案 »

  1.   

    代码是否应该修改为if(flag){...}?
    如果是的话在多线程情况下也会出现问题的,如果一个线程刚好判断了flag,发现flag是true,那么他将进入if块,这时候被挂起了,执行另外一个线程,也判断if(flag),但是这个时候flag还没被修改,所以也会进入if块,这样就导致了2个线程都会去执行if块里面的代码,这样就不满足同步。
      

  2.   

    if(test) ? if(flag)吧?
    有同步问题,flag静态变量,属于类的。public test() 是构造方法,LZ在里面要处理什么?觉得这样结构不是太好。构造方法就写构造对象用的代码,其它逻辑在别的方法里写。
      

  3.   

    不好意思  写错了 应该是if(flag)