全局安全单例模式
私有静态内部类方式
public class QueenUtil {
public ArrayList<Corps> corps;
private QueenUtil() {
corps = new ArrayList<>();
}
public static QueenUtil getIntance() {
return QueenHolder.INSTANCE;
}
private static class QueenHolder {
private static QueenUtil INSTANCE = new QueenUtil();
}
}
虚拟机会保证一个类的构造器<clint>()在多个线程执行环境中被正确的加锁、同步,如果多个线程同时初始化一个类,那么只会有一个线程去执行这个类的类构造器<clint>(),其他线程都要阻塞等待,等到活动线程执行<clint>()方法完毕。
特别注意,这种情况下,虽然其他线程会被阻塞,但是如果执行< clint>()方法的那条线程退出后,其他线程在被唤醒之后不会再次进入执行< clint>()方法,因为在同一个类加载器下,一个类型只会被初始化一次,上述代码获得的单例是静态变量,初始化赋值,类被初始化一次,可以保证单例模式。
- 参考资料,CSDN链接