1.饿汉式
class Single
{
private static final Single s = new Single();
private Single(){}
public static Single getInstance()
{
return s;
}
}
2.懒汉式
1)特点:实例的延迟加载,多线程访问会出现线程安全问题
2) 线程安全解决方案:可以加同步来解决:
1,方式一:使用同步函数:同步函数比较低效,每次都要判断
2,方式二:使用同步代码块,同步代码块,可以用双重判断的方式来解决,使用的锁是该函数所在类的字节码文件对象。
class Single
{
private static Single s = null;
private Single(){}
public static Single getInstance()
{
if(s==null)
{
synchronized(Single.class)
{
if(s==null)
//--->A;
s = new Single();
}
}
return s;
}
} |