目的:保证仅创建一个对象,需要考虑线程安全和效率问题
一、饿汉式
线程安全,资源利用不高,该类的其他静态方法被调用,或者加载了该类时,将导致静态变量被初始化
二、懒汉式
DCL+volatile:线程安全(除反射)
volatile:保证可见性和避免指令重排序(内存屏障)
三、静态内部类
线程安全(除反射)
四、枚举
线程安全
目的:保证仅创建一个对象,需要考虑线程安全和效率问题
一、饿汉式
线程安全,资源利用不高,该类的其他静态方法被调用,或者加载了该类时,将导致静态变量被初始化
二、懒汉式
DCL+volatile:线程安全(除反射)
volatile:保证可见性和避免指令重排序(内存屏障)
三、静态内部类
线程安全(除反射)
四、枚举
线程安全