单例模式

singleton 三个特征:

1.必须只有一个实例;

2.它们必须自行初始化;

3.所有对象共享这一个实例;

 

//懒汉式相对于饿汉式,暂理解在后实例化吧

public class Singleton {private static  Object obj = new Object();

     private static Singleton instance=null;//只有一个实例

     private Singleton(){}//保证只能内部访问,自己实例化

     public static synchronized  Singleton getInstance() {//所有对象共享这一个实例
             if(instance==null){// 这里加判断的目的是保证后续来的线程不用在进入同步代码块中,这个可以提高后续程序效率
                 synchronized (obj) {
                    if(instance==null)
                        instance=new Singleton();//自行初始化
                }     
             }
           return instance;
   }    
}

 

 

 

//饿汉式

class Singleton {

     private static Singleton instance=new Singleton();

     private Singleton(){}

     public static synchronized  Singleton getInstance() {

            return instance;

     }

}

 

懒汉式是,只有用到这个用例的时候,再将他实例化,不会浪费,所以效率要高一些。但是多线程不安全

饿汉式则是程序只要开始,就将他实例化,到用到他的时候就省去了再实例的时间,所以速度和反应快。

这是这俩的区别 不过差距不会那么明显。 但是大项目,在效率上体现的就有点明显了

 

posted on 2011-12-28 16:25  lovebeauty  阅读(844)  评论(0编辑  收藏  举报

导航