1.9什么是单例模式?有几种?(必会)
单例模式:某个类的实例在 多线程环境下只会被创建一次出来。
单例模式有饿汉式单例模式、懒汉式单例模式和双检锁单例模式三种。
饿汉式:线程安全,一开始就初始化。
public class Singleton {
public static Singleton instance = new Singleton();
public Singleton(){}
public static Singleton getInstance() {
return instance;
}
}
懒汉式:非线程安全,延迟初始化。
public class Singleton {
public static Singleton instance;
public Singleton() { }
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
双检锁:线程安全,延迟初始化。
public class Singleton {
private volatile static Singleton singleton;
private Singleton() { }
public static Singleton getInstance() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton==null){
singleton=new Singleton();
}
}
}
return singleton;
}
}