单例设计模式分为两种分为 : 饿汉式 懒汉式 。
1. 懒汉式与饿汉式有什么不同?
答:懒汉式的特点在于实例延迟加载。
2.懒汉式延迟加载有木有问题?如果有怎么解决?
答:有,如果多线程访问时,会出现安全问题;
解决办法:可以加同步来解决,而加同步的方式同步代码块与同步方法都行,但是稍微有一些低效;用双重判断的形式能解决效率问题。
3.加同步的时候使用的锁是哪一个?
答:该类所属的字节码文件对象(类名.class)。
----------------------------------------------------------------------------------
饿汉式示例:class Single{
private static final Single s= new Single();
private Single(){}
public static Single getInstance(){
return s;
}
}
--------------------------------------------
懒汉式示例:
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;
}
}