确实存在线程安全问题,搞上同步就行了......- class Single2{
- private Single2(){}
- private static Single2 s = null;
- public synchronized static Single2 getInstance(){ //进行同步
- if(s==null){
- if(s==null) //两步判断,执行效率高
- s = new Single2(); //运行原理,线程A 进入此线程代码区,判断,若为null,则实例化,执行完后,其他冻结状态的线程争夺cpu执行权,加入线程B 获取资源,判断
- } // 经过第一个条件,若为null,则满足,然后进入第二个条件,这时候就不满足了,直接退出了。。。。
- return s;
- }
- }
复制代码 |