//饿汉式:
public class Single{
private static Single s = new Single();
private Single(){}
public static Single getInstance(){
return s;
}
}
//懒汉式:
public class Single{
private static Single s = null;
public static synchronized Single getInstance(){
if(s==null)
s = new Single();
return s;
}
} 饿汉式: 对象预先加载,在类创建好的同时对象生成,代码简练。
懒汉式:对象延迟加载,只有在调用的时候才实例化对象。
从资源利用上讲,饿汉式不如懒汉式,因为饿汉式加载类时就会创建静态对象,占据一定内存。
但懒汉式有线程安全的问题,可以通过synchronized解决,其实synchronized加在方法上比较影响性能
,虽然可以通过双重判定解决,但代码相对饿汉式复杂不少。
因此建议选择饿汉式
|