• 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】

  • 相关阅读:
    yanghui杨辉三角--(一维数组
    yanghui杨辉三角--(一维数组)探索1 2
    yanghui杨辉三角--(二维数组
    Fiber VS Coroutine VS Green Thread
    Java8-Reference
    Boolean
    Java-相等
    java.lang.Cloneable
    java.lang.CharSequence
    java.lang.AutoCloseable
  • 原文地址:https://www.cnblogs.com/shundong106/p/10364367.html
Copyright © 2020-2023  润新知