JAVA 单例模式
饿汉式
public class SingletonTest {
private static SingletonTest instance = new SingletonTest();
private SingletonTest() {}
public SingletonTest getInstance() {
return instance;
}
}
饿汉式
public class SingletonTest {
private static SingletonTest instance = new SingletonTest();
private SingletonTest() {}
public SingletonTest getInstance() {
return instance;
}
}
双重检查
package com.zhf.study.test;
public class SingletonTest {
private SingletonTest() {
}
private static volatile SingletonTest instance = null;
public static SingletonTest getInstance() {
if (instance == null) {
synchronized (SingletonTest.class) {
if (instance == null) {
instance = new SingletonTest();
}
}
}
return instance;
}
}
静态内部类
public class SingletonTest {
private SingletonTest() {
}
private static class SingletonHolder {
private static final SingletonTest INSTANCE = new SingletonTest();
}
public static SingletonTest getInstance() {
return SingletonHolder.INSTANCE;
}
}