zoukankan      html  css  js  c++  java
  • Java单例模式之最优解分析【为何说是最优解】

    代码如下

    /**
     * 
     * @ClassName: SingletionStaticInner
     * @Description: TODO【单例模式之最优解】
     * @author shundong.wu
     * @date 2019年2月12日
     *  线程安全
     */
    class SingletonStaticInner {
      private SingletonStaticInner() {
    
      }
      private static class SingletonInner {
        private static SingletonStaticInner singletonStaticInner = new SingletonStaticInner();
      }
      public static SingletonStaticInner getInstance() {
        try {
         Thread.sleep(1000);
        } catch (InterruptedException e) {
         e.printStackTrace();
        }
      return SingletonInner.singletonStaticInner;
      }
    }
    

      

      

    为何说是最优解呢? 

    可以看到使用这种方式我们没有显式的进行任何同步操作,那他是如何保证线程安全呢?和饿汉模式一样,是靠JVM保证类的静态成员只能被加载一次的特点,这样就从JVM层面保证了只会有一个实例对象。那么问题来了,这种方式和饿汉模式又有什么区别呢?不也是立即加载么?实则不然,加载一个类时,其内部类不会同时被加载。一个类被加载,当且仅当其某个静态成员(静态域、构造器、静态方法等)被调用时发生。
    ——————————————————新年快乐——————————————

    来吧 来吧 作者学粗才浅 尽管骚扰【邮箱 shundong106@icloud.com】

  • 相关阅读:
    github首页添加README.md
    uni-app 使用问题记录
    rgb转16进制js方法,npm插件
    升级vue3注意事项记录 vue3都需要升级些什么
    获取当前网页的协议+域名(兼容IE)
    C++ 真随机
    vue打包后反编译到源代码(reverse-sourcemap)(转载)
    vue导出页面为pdf文件
    设计模式总结
    访问者模式
  • 原文地址:https://www.cnblogs.com/shundong106/p/10364367.html
Copyright © 2011-2022 走看看