黑马程序员 学习笔记四: 单例设计模式

2014-11-24 08:14:40 · 作者: · 浏览: 0

单例设计模式讲两个:饿汉式和懒汉式 。


饿汉式特点:线程安全 但是 不能延迟加载

懒汉式特点:延迟加载实例 但是 多线程不安全

怎么解决懒汉式的不安全问题呢?

使用 synchronized 同步代码块

怎么解决效率问题?

用双重判定

加同步时使用的锁是哪个?

类名.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)//静态中使用同步锁是 类名.class 不是this

{

if(s==null)

s=new Single();

}

else

return s;

}

}