饿汉式 static 初始化:线程安全
- 饿汉模式的另一种写法:使用静态代码块。
- 注意:使用静态代码段static{} 初始化单例对象时,一定要注意静态代码段的单例对象申明语句的顺序,类加载时,是顺序执行的。图中的静态变量声明一定要放在静态代码块前面。
正确代码
package com.mmall.concurrency.example.singleton;
import com.mmall.concurrency.annoations.ThreadSafe;
/**
* 饿汉模式
* 单例实例在类装载时进行创建
*/
@ThreadSafe
public class SingletonExample6 {
// 私有构造函数
private SingletonExample6() {
}
// 单例对象
private static SingletonExample6 instance = null;
static {
instance = new SingletonExample6();
}
// 静态的工厂方法
public static SingletonExample6 getInstance() {
return instance;
}
public static void main(String[] args) {
System.out.println(getInstance().hashCode());
System.out.println(getInstance().hashCode());
}
}