- 饿汉模式
初始化时就实例化,线程安全。
JVM在类的初始化阶段(即在Class被加载后,且被线程使用之前),会执行类的初始化。在执行类的初始化期间,JVM会去获取一个锁。这个锁可以同步多个线程对同一个类的初始化。
public class InstanceFactory{
private static class InstanceHolder{
public static Instance instance = new Instance();
}
public static Instance getInstance(){
//这里将导致InstanceHolder类被初始化
return InstanceHolder.instance;
}
}
- 懒汉模式
使用时候才实例化。
双重判空,第一次判空防止重复加锁,第二次判空才实例化。