单例有两个模式:懒汉式和饿汉式
(1)饿汉式:
class Single
{
private Single(){}//将构造函数私有化,不让别的类建立该类对象
private static final Single s=new Single();//自己建立一个对象
public static Single getInstance()//提供一个公共访问方式
{
return s;
}
}
(2)懒汉式:
class Single
{
private Single(){}
private static Single s;
public static Single getInstance()
{
if(s==null)//延迟了加载
s=new Single();
return s;
}
}
这两个模式的区别:
(1)饿汉式是类一加载进内存就创建好了对象;懒汉式是延迟加载,
(2)如果多个线程同时操作懒汉式时就有可能出现线程安全问题,解决线程安全问题
可以加同步来解决。但是加了同步之后,每一次都要比较锁,效率就变慢了