单例模式探究
发布日期:2021-07-20 20:53:58 浏览次数:72 分类:技术文章

本文共 787 字,大约阅读时间需要 2 分钟。

一般我们写单例模式要达到懒加载+线程安全+高性能一般会使用双锁检测DCL写法,如下:

public class Singleton {      private volatile static Singleton singleton;      private Singleton (){}      public static Singleton getSingleton() {      if (singleton == null) {          synchronized (Singleton.class) {          if (singleton == null) {              singleton = new Singleton();          }          }      }      return singleton;      }  }

现在可以利用

①静态内部类是在被显式调用才被加载

②final可见且不可变=绝对线程安全

来达成懒加载+线程安全+高性能的要求,不过这种写法和DCL写法不同的是只适用于静态域的情况,双检锁方式可在实例域需要延迟初始化时使用。

写法如下:

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

 

转载地址:https://blog.csdn.net/liao0801_123/article/details/89000240 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:java搜索引擎的选择elasticSearch和Solr
下一篇:SpringBoot的ApplicationRunner

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月23日 07时32分58秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章