懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的
对于所谓的懒汉式最好用双锁,不要把同步加在方法上,非常影响性能,因为单例方法往往会用得非常平凡,同步会带来很大的性能损耗。
private Singleton() {}
private static Singleton s = null;
public static Singleton getInstance() {
synchronized(Singleton.class){
//线程的同步代码块(加的锁是Singleton类的字节码)
if(s == null){
s = new Singleton();
}
return s;
}
}
|