题解 | #创建单例对象#
创建单例对象
http://www.nowcoder.com/practice/9b316cd2d6264776918bc4bc31f37aec
线程安全,双重校验
public class Main {
public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1 == s2);
}
}
class Singleton {
private volatile static Singleton instance;
private Singleton() {
}
public static Singleton getInstance(){
if(instance == null){
synchronized(Singleton.class){
if(instance == null){
instance = new Singleton();
}
}
}
return instance;
}
}
线程的不安全(懒汉式)
class Singleton {
private static Singleton instance;
private Singleton() {
}
public static Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
}
线程不安全(饿汉式)
class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {
}
public static Singleton getInstance(){
return instance;
}
}
备注:饿汉式和 懒汉式也可以是线程安全的,比如加上synchronized
曼迪匹艾公司福利 125人发布