文章目录
核心
保证一个类只有一个对象,并且提供一个访问该类的全局访问点。
优点
- 减少系统性能开销,,对象的产生需要较多资源时,如配置文件读取,产生其他依赖对象,可在应用启动时直接产生一个单例对象,然后主流内存。
- 可以优化共享资源的访问,如可以用一个单例类负责所有数据表的映射处理。
常见的五种实现方式
饿汉式(线程安全,调用效率高,但不能延时加载)
public class SingletonDemo {
// 类初始化时,立即加载这个类,没有延时加载,线程安全
private static SingletonDemo instance = new SingletonDemo();
private SingletonDemo() {
}
public static SingletonDemo getIntance() {
return instance;
}
}
static变量在类装载时初始化,虚拟机保证只会装载一次类,肯定不会发生并发访问问题。
问题:若只是想加载类,而不是调用getInstance(),甚至永远没调用,就会造成资源的浪费。