用至少两种方式实现一个Singleton(单例模式)
一、静态内部类实现:这种方式是 Singleton类被装载了, instance不一定被初始化。因为SingletonHolder类没有被主动使用,只有显示通过调用getInstance方法时,才会显示装载SingletonHolder类,从而实例化instance。
public class Singleton {
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
private Singleton (){}
public static final Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
二、双重检查锁:在JDK1.5之后,双重检查锁定才能够正常达到单例效果。(因为volitile关键字)
public class Singleton {
private volatile static Singleton singleton;
private Singleton (){}
public static Singleton getSingleton() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
如果对你有帮助可以关注我,还整理了很多大厂面试题,不定期发布到这里https://download.csdn.net/user/weixin_39813541/uploads需要可以下载,都附有答案