美文网首页
静态内部类实现懒加载单例模式

静态内部类实现懒加载单例模式

作者: Mr_Editor | 来源:发表于2020-06-19 15:33 被阅读0次

    代码

    public class Singleton {
        
        private Singleton() {
            System.out.println("single");
        }
        
        private static class Inner {
            private static Singleton s = new Singleton();
        }
        
        public static Singleton getSingle() {
            return Inner.s;
        }
        
        public static void main(String[] args) {
            Thread[] ths = new Thread[200];
            for(int i=0; i<ths.length; i++) {
                ths[i] = new Thread(()->{
                    System.out.println(Singleton.getSingle());
                });
            }
            
            Arrays.asList(ths).forEach(o->o.start());
        }
        
    }
    

    为什么

    • Java程序的初始化顺序依次是:

    父类静态变量-->父类静态代码块-->子类静态变量-->子类静态代码块-->父类非静态变量-->父类非静态代码块-->父类构造函数-->子类非静态变量-->子类非静态代码块-->子类构造函数

    • static 关键字:

    一句话描述就是:方便在没有创建对象的情况下进行调用(方法/变量) ,(此处要区分对象和类的区别)
    显然,被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。

    • 用静态的内部类实现单例模式的原理:

    静态内部类可以不依赖外部类的实例而被实例化。

    相关文章

      网友评论

          本文标题:静态内部类实现懒加载单例模式

          本文链接:https://www.haomeiwen.com/subject/adovxktx.html