Java单例模式
核心: 保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。
创建型模式,这里写的最简单的两个。其实还有双重检测锁式(由于JVM底层内部模型原因,偶尔会出问题。不建议使用); 静态内部类式(线程安全,调用效率高。 但是,可以延时加载); 枚举单例(线程安全,调用效率高,不能延时加载)
一、饿汉式
public class SingletonDemo {
//类初始化时,立即加载(没有延时加载的优势)。这个对象加载类时,天然的线程安全!
private static SingletonDemo instance = new SingletonDemo(); //加载类时就进行初始化
private SingletonDemo() {}
//方法没有同步调用效率高
public static SingletonDemo getInstance() {
return instance;
}
}
二、懒汉式
public class SingletonDemo {
private static SingletonDemo instance;
private SingletonDemo(){}
//需要synchronized关键字 防止重复构建对象,就是会降低并发时的效率
public static synchronized SingletonDemo getInstance() {
if(instance == null) { //延迟加载
instance = new SingletonDemo();
}
return instance;
}
}
标签:private,instance,模式,单例,SingletonDemo,public,加载
From: https://www.cnblogs.com/fragmentary/p/18276975