学习路径:https://coding.imooc.com/learn/list/270.html
前言加锁可以解决饿汉式单例模式的线程安全。
【饿汉式】https://blog.csdn.net/chenghan_yang/article/details/90447741
静态内部类
静态内部类实现单例模式,本质也是【加锁】,只不过该锁加在【类加载的过程】
public class StaticInnerClassSingleton { // 私有构造函数,保证不能被外部new出来 private StaticInnerClassSingleton() {} private static class InnerClass { private static StaticInnerClassSingleton staticInnerClassSingleton = new StaticInnerClassSingleton(); } public static StaticInnerClassSingleton getInstance() { return InnerClass.staticInnerClassSingleton; } }jvm启动后 静态内部类不会被直接加载。 只有在使用静态内部类的时候,他才会加载
外部调用getInstance()方法后,会触发InnerClass的加载,任意一个线程获取该【类加载】的锁后,就能保证StaticInnerClassSingleton首次给new出来,只有一个线程进入该内部类。加载完成后,static成员变量是唯一的。
