上周招银网络笔试题,居然考的单例模式,太久没写,都有点忘了。这里回顾一下。
最基本的,饿汉式和懒汉式,饿汉式是直接初始化,懒汉式是要用的时候再初始化。
1.饿汉式
public class Singleton {
private static final Singleton instance = new Singleton();
// 私有化构造方法,防止通过反射创建
private Singleton() {
}
public static Singleton getInstance() {
return instance;
}
}
2.懒汉式-简单的懒汉式
直接用synchronized关键字锁住获取实例的方法
相比饿汉式的优点是不使用的时候不用初始化
public class Singleton {
private static Singleton instance;
// 私有化构造方法,防止通过反射创建
private Singleton() {
}
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
3.懒汉式-双重检查
getInstance()方法做了双重检查,优化性能
public class Singleton {
private static volatile Singleton instance;
// 私有化构造方法,防止通过反射创建
private Singleton() {
}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}

1389

被折叠的 条评论
为什么被折叠?



