黑马程序员技术交流社区
标题:
单例设计模式
[打印本页]
作者:
醉演星松
时间:
2015-7-23 23:49
标题:
单例设计模式
分为懒汉式和饿汉式
饿汉式
class Single
{
private static final Single s = new Single();//final可以不写,写上更加严谨
private Single(){}
public static Single getInstance()
{
return s;
}
}
复制代码
线程安全
懒汉式
懒汉式:实例的延迟加载
class Single
{
private static Single s = null;
private Single(){}
public static Single getInstance()
{
if(s==null)
s = new Single();
return s;
}
}
复制代码
懒汉式是非线程安全的,所以需要改进以确保安全:
懒汉式在多线程访问时存在安全隐患可以将getInstance方法写成同步方法
为了提高效率,改写成同步代码块的形式
class Single
{
private static Single s = null;
private Single(){}
//public static synchronized Single getInstance()//同步函数,效率低
public static Single getInstance()
{
if(s==null)
{
synchronized(Single.class)//每次都判断if(s==null),效率低,多加一层判断
{
if(s==null)
s = new Single();
}
}
return s;
}
}
复制代码
所以一般还是用饿汉式
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2