码迷,mamicode.com
首页 > 其他好文 > 详细

单例模式几种安全的实现

时间:2019-03-07 00:58:00      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:on()   lin   syn   最大   实例   effect   function   sys   ati   

 

一、懒汉式,线程安全

public static synchronized Singleton getInstance() {
    if (instance == null) {
        instance = new Singleton();
    }
    return instance;
}

 

这虽然是线程安全的,但是效率低。

 

二、饿汉式,线程安全

public class Singleton{
  //类加载时就初始化
  private static final Singleton instance = new Singleton();

  private Singleton(){}

  public static Singleton getInstance(){
    return instance;
  }
}

但是要是明确要求是需要懒加载的,这个就不行的

 

三、静态内部类

我比较倾向于使用静态内部类的方法,这种方法也是《Effective Java》上所推荐的。

public class Singleton {  
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
private Singleton (){}
public static final Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}

 

 

四、枚举

用枚举写单例实在太简单了!这也是它最大的优点。下面这段代码就是声明枚举实例的通常做法。

public enum EasySingleton{
INSTANCE;
}

单例模式几种安全的实现

标签:on()   lin   syn   最大   实例   effect   function   sys   ati   

原文地址:https://www.cnblogs.com/chenmz1995/p/10487026.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!