public class Singleton_01 {
private static Singleton_01 instance;
// 构造函数添加私有属性private,防止调用人员实例化
private Singleton_01() {
}
public static Singleton_01 getInstance(){
// 多个线程同时执行到此处,instance为空,会创建出多个Singleton_01对象
if (null != instance) {
return instance;
}
// 返回实例化的对象
return new Singleton_01();
}
}
public class Singleton_02 {
private static Singleton_02 instance;
// 构造函数添加私有属性private,防止调用人员实例化
private Singleton_03 (){}
// 加锁保证单例
public static synchronized Singleton_02 getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
public class Singleton_03 {
private volatile static Singleton_03 singleton;
private Singleton_03 (){}
public static Singleton_03 getSingleton() {
// 提前判断提高效率
if (singleton == null) {
// 加锁保证单例
synchronized (Singleton_03.class) {
if (singleton == null) {
singleton = new Singleton_03();
}
}
}
return singleton;
}
}
public class Singleton_04 {
// 程序启动时直接创建对象
private static Singleton_04 instance = new Singleton_04();
// 构造函数添加私有属性private,防止调用人员实例化
private Singleton_04() {
}
public static Singleton_04 getInstance() {
return instance;
}
}
public class Singleton_05 {
// 内部类,jvm保证单例
private static class SingletonHolder {
private static final Singleton_05 INSTANCE = new Singleton_05();
}
private Singleton_05 (){}
public static final Singleton_05 getInstance() {
return SingletonHolder.INSTANCE;
}
}
public enum Singleton_06 {
INSTANCE;
public static final Singleton_06 getInstance() {
return Singleton_06.INSTANCE;
}
}
原文:https://www.cnblogs.com/ajjava/p/14756708.html