zoukankan      html  css  js  c++  java
  • Java编程中推荐的Singleton模式

    希望是能在使用Singleton模式的时候既能考虑到性能,又能延迟加载。

    public class StaticSingleton {  
        private StaticSingleton(){  
            System.out.println("StaticSingleton is create");  
        }  
        private static class SingletonHolder {  
            private static StaticSingleton instance = new StaticSingleton();  
        }  
        public static StaticSingleton getInstance() {  
            return SingletonHolder.instance;  
        }  
    }

    在这个实现中,单例模式使用内部类来维护单例的实例,当StaticSingleton被加载时,其内部类并不会被初始化,故可以确保当 StaticSingleton类被载入JVM时,不会初始化单例类,而当getInstance()方法被调用时,才会加载 SingletonHolder,从而初始化instance。同时,由于实例的建立是在类加载时完成,故天生对多线程友好,getInstance() 方法也不需要使用同步关键字。因此,这种实现方式同时兼备以上两种实现的优点。

    注意:使用内部类的方式实现单例,既可以做到延迟加载,也不必使用同步关键字,是一种比较完善的实现。

  • 相关阅读:
    PHP调试的时候出现了警告:
    快报滚动
    js foreach、map函数
    箭头函数和普通函数的区别
    flex布局
    react+propTypes
    手机尺寸
    less的使用
    发现是在IE6-IE9下,下列元素table,thead,tfoot,tbody,tr,col,colgroup,html,title,style,frameset的innerHTML属性是只读的
    div+css 组织结构
  • 原文地址:https://www.cnblogs.com/buhaiqing/p/2797442.html
Copyright © 2011-2022 走看看