懒汉式与饿汉式有什么不同?
懒汉式的特点在于延迟加载, 懒汉式延迟加载有没有问题,有
怎么解决,加同步的方式解决,用同步代码块和同步函数都行,但是稍微有些低效。
双重判断可以解决效率问题,加同步的时候,使用的锁是那个该类所属的字节码对象。
*/
class Single{
//懒汉式 ,在多线程访问下会出现安全隐患。懒汉式加了同步会比较低效
private static Single s=null;
private Single(){
}
/*
延迟加载,对象被延迟
s是共享数据,如果多个线程并发访问getInstance,是有可能的!
*/
public static Single getInstance(){
//用双重判断的问题解决了懒汉式的效率问题
if(s==null){
synchronized(Single.class){
if(s==null){
s=new Single();
}
}
}
return s;
}
}
|