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】

  • 相关阅读:
    flask路由(2)
    flask(1)
    了解websocket协议
    理解python的queue&deque
    oracle sqlplus中使用spool生成美化的html网页
    Oracle自动生成html格式awr的报告
    oracle data guard备库备份恢复
    【翻译自mos文章】DBA_JOBS 和 DBA_JOBS_RUNNING 不同的结果的解释
    ORA-23421: job number 225 is not a job in the job queue
    ORA-23421: job number 225 is not a job in the job queue
  • 原文地址:https://www.cnblogs.com/shundong106/p/10364367.html
Copyright © 2011-2022 走看看