1.你这个是饿汉式。懒汉式:对象在方法被调用时才初始化,也叫对象的延时加载
饿汉式:类进存,对象还没有存在,只能调用其对外的方法才能创建对象。
开发是一般都用饿汉式
2.多线程解决懒汉式的问题
class Single{
private static Single s = null;
private Single(){}
public static Single getInstance(){
if(s == null){
synchronized(Single.class){
if(s == null){
s = new Single();
}
}
}
return s;
}
}
这样就行了
懒汉式的特点在于实例的延时加载,如果多线程时会出现安全问题。如何解决,加同步
用双重判断的方式,但会有效率问题,加同步的时候使用的锁是哪个,该类在内存中的
字节码 |