单件模式(单利模式)

单件模式确保一个类只有一个实例,并提供一个全局访问点。

单线程

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

多线程同步

可以解决多线程访问,但同步getInstance方法会造成额外的负担,频繁调用可能会使程序执行效率下降100倍。

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

急切单件

如果应用程序总是创建并使用单件实例,或者在创建和运行时方面的负担不太繁重时,可使用急切单件模式。

public class Singleton {
     private static Singleton uniqueInstance = new Singleton();
     private Singleton () {}
     public static Singleton getInstance() {
         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;
     }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1 场景问题# 1.1 读取配置文件的内容## 考虑这样一个应用,读取配置文件的内容。 很多应用项目,都有与应用相...
    七寸知架构阅读 7,031评论 12 68
  • 我曾经写过一篇文章叫《上帝是如何把宙斯挤下神坛的》,那么上帝在成为唯一的神以后是怎么处理来自凡人的祈祷和愿望呢?忙...
    和坚阅读 1,056评论 11 7
  • 单例模式(SingletonPattern)一般被认为是最简单、最易理解的设计模式,也因为它的简洁易懂,是项目中最...
    成热了阅读 4,580评论 4 34
  • 孩子有计划生活有快乐的玩也有学习,实用程序育儿法,有用吗?让孩子参加各种社会活动比赛做哪些准备,去哪参加能培养活泼...
    做更好的自己给你看阅读 207评论 0 0
  • 感恩老公买了我喜欢吃的东西给我 感恩办理公积金的工作人员很快的帮我办好事情 感恩公交车司机在我们上车时善意的提醒 ...
    猫儿猫儿阅读 157评论 0 0

友情链接更多精彩内容