饿汉式:
class Single
{
private String name;
//1.将初始化构造函数私有化
private Single(){};
//2.在本类中创建一个本类对象
private static Single s = new Single();
//3.对外提供一个访问方法
public static Single SingleInstance()
{
return s;
}
}
懒汉式
class Singlee
{
private static Singlee s = null;
private Singlee(){}//私有
public static Singlee SingleInstance()
{
if(s==null)//双重if判断
{
synchronized(Singlee.class)//上锁
{
if(s==null)
{
s = new Singlee();
}
}
}
return s;
}
}
饿汉式与懒汉式的区别:
饿汉式先初始化对象,Single类一进入内存,就已经创建好了一个静态对象。
饿汉式特点:线程安全
懒汉式对象是被方法调用时,才初始化,也叫做对象的延时加载。
Single类进内存,对象还没有存在,只有调用了“SingleInstance方法时,才建立对象”
懒汉式特点:在创建实例对象时,如果不加上synchronized则会导致对对象的访问线程不安全
所以推荐使用饿汉式,懒汉式只要知道其特点就可以,面试的时候有可能会考到 |