饿汉式
class Single {
private static final Single single = new Single();
private Single(){}
public static Single getInstance(){
return single;
}
}
懒汉式
用于实例的延迟加载,如果多线程访问时,会出现安全问题,可以加同步来解决,用同步函数和同步代码块都行,
但是加了同步会低效
class Single {
private static Single single = null;
private Single(){}
public static synchronized Single getInstance(){
if(single == null) {
single = new Single();
}
return single;
}
}
但可以用双重判断的形式,稍微提高效率,加同步的时候使用的锁是该类所谓的字节码文件对象
class Single {
private static Single single = null;
private Single(){}
public static Single getInstance(){
if(single == null){
synchronized (Single.class) {
if (single == null)
single = new Single();//只要初始化一次
}
}
return single;
}
}