首页 > 编程语言 > 详细

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

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

单例模式:

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

饿汉式:(线程安全)

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设计模式----单例模式

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!