标签:singleton runtime time 饿汉 对象 保存 形式 getc 线程安全
唯一的实例
注意:私有化构造器、自行创建(含有一个该类的静态变量来保存唯一实例)、必须自行向整个系统提供这个实例(对外提供获取该实例对象的方式:1、直接暴露2、静态变量的get方法获取)
直接实例化饿汉式简洁直观
枚举式 最简洁
静态代码块饿汉式 适合复杂实例化
饿汉式方式一:
public class Singleton1 {
public static final Singleton1 SINGLETON1 = new Singleton1();
private Singleton1() {
}
}饿汉式方式二:
public enum Singleton2 {
SINGLETON;
}饿汉式方式三:
public class Singleton3 {
public static final Singleton3 SINGLETON3;
private String info;
static {
try {
Properties properties = new Properties();
properties.load(Singleton3.class.getClassLoader().getResourceAsStream("singleton.properties"));
SINGLETON3 = new Singleton3(properties.getProperty("info"));
} catch (IOException e) {
// TODO Auto-generated catch block
throw new RuntimeException(e);
}
}
private Singleton3(String info){
this.info= info;
}
线程不安全 适用于单线程
线程安全 适用于多线程
静态内部类形式 适用于多线程
线程安全
public class Singleton4 {
private static Singleton4 singleton4;
private Singleton4() {
}
public static Singleton4 getSingleton() {
if (singleton4==null) {
synchronized (Singleton4.class) {
if (singleton4 == null) {
return singleton4 = new Singleton4();
}
}
}
return singleton4;
}
}静态内部类方法
public class Singleton5 {
private Singleton5(){
}
private static class Single{
private final static Singleton5 SINGLETON = new Singleton5();
}
public static Singleton5 getSingleton() {
return Single.SINGLETON;
}
}
饿汉式:枚举形式最简单
懒汉式:静态内部类形式最简单
标签:singleton runtime time 饿汉 对象 保存 形式 getc 线程安全
原文地址:https://www.cnblogs.com/1012dk/p/10915409.html