饿汉式单例和懒汉式单例比较

来源:互联网 发布:港台 知乎 编辑:程序博客网 时间:2024/05/21 16:12

         饿汉式单例:

       

public class Singleton{  private static final Singleton singleton = new Singleton();    /*   * 必须为私有构造器,为了为避免人为的new 操作,这样违反了单例的原则了   */  private Singleton()  {        }    public static Singleton getInsance()  {      return singleton;  }}

       懒汉式单例 :

 

public class Singleton{    /*     * 与饿汉式不同,不能加final关键字, 因为它的值要改变     */    private static Singleton singleton = null;    /*     * 必须为私有构造器,为了为避免人为的new 操作,这样违反了单例的原则了     */    private Singleton()    {    }    /*     * 必须加同步关键字synchronized,为了避免多线程同时访问时,创建多个实例     */    public synchronized static Singleton getInsance()    {        if (singleton == null)        {            singleton = new Singleton();        }        return singleton;    }}

      饿汉式单例不涉及线程安全问题,也不需要加条件判断,性能更好一点,  相比较而言,饿汉式单例也是用得最多的。

0 0