码迷,mamicode.com
首页 > 编程语言 > 详细

java设计模式----单例模式

时间:2017-06-11 18:24:14      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:uniq   single   问题   全局   访问   java   实例   多个   多个实例   

单例模式:

  确保一个类只有一个实例,并提供一个全局访问点

饿汉式:(线程安全)

public class Singleton {
  private static Singleton uniqueInstance = new Singleton();

  private Singleton() {

  }

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

懒汉式:(线程不安全)

public class Singleton {
  private static Singleton uniqueInstance;

  private Singleton() {

  }

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

 

双重检查加锁:(线程安全)

public class Singleton {
  private volatile static Singleton uniqueInstance;

  private Singleton() {

  }

  public static Singleton getInstance() {
    if (uniqueInstance == null) {
      synchronized (Singleton.class) {
        if (uniqueInstance == null) {
          uniqueInstance = new Singleton();
        }
      }
    }
    return uniqueInstance;
  }
}

 

要点:

  1、单例模式确保程序中一个类最多只有一个实例

  2、单例模式也提供访问这个实例的全局点

  3、在Java中实现单例模式需要私有的构造器,一个静态方法和一个静态变量

  4、确定在性能和资源上的限制,然后小心地选择适当的方案来实现单例,以解决多线程的问题

  5、如果不是采用第五的Java2,双重检查加锁实现会失效

  6、小心,你如果使用多个类加载器,可能导致单例失效而产生多个实例

  7、如果使用JVM1.2或之前的版本,你必须建立单例注册表,以免垃圾收集器将单例回收

java设计模式----单例模式

标签:uniq   single   问题   全局   访问   java   实例   多个   多个实例   

原文地址:http://www.cnblogs.com/stanljj/p/6985677.html

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