饿汉:类一加载是就创建实例
public Single{
private Single(){}
private static Single s=new Single();
public static Single getInstance(){
return s;
}
}
懒汉模式:延迟加载,调用该类的时候才创建对象。适用于用于多线程,但有安全问题,怎么办?同步函数比较低效,可使用同步代码块,多重判断提高效率。
public class Single
{
private Single(){}//私有构造函数,防止外部创建实例对象
private static Single s=null;//2.创建对象
public static Single getInstance(){ //3.提供方法
if(s==null){ //双重判断提高效率
synchronized(Single.class){ //静态对象锁不再是this,而是 类.class
if(s==null)
饿汉式。开发一般用这种
Single类一进内存,就已经创建好了对象。
class Single
{
private static Single s = new Single();
private Single(){}
public static Single getInstance()
{
return s;
}
}
对象时方法被调用时,才初始化,也叫做对象的延时加载。称为:懒汉式。
//Single类进内存,对象还没有存在,只有调用了getInstanc方法时,才建立对象。
class Single
{
private static Single s = null;
private Single(){}
public static Single getInstance()
{
/*
if(s == null)
s = new Single();
else
return s;
*/
if(s == null)
{
synchronized(Single.class)
{
if(s == null)
s = new Single();
}
}
reruen s;
}
class single
{
private single(){}
private static single s =new single();
public static single getInstance()
{
return s;
}
}
懒汉式:
class single
{
private single(){}
private static single s =null;
public static single getInstance()
{
if(s==null)
{
return s=new single();
}
return s;
}
}