理解:单例模式下,对象在程序加载或者第一次使用便被初始化,成为唯一全局变量,在单线程或者多线程情况下,所有线程取到单例对象都是相同,若对单例对象进行修改,在其他线程下对于单例对象也是同样变化的。
没有理解错误的话,在springboot容器启动时,spring容器对象是单例的,我们可以通过单例spring容器来获取容器内部的各自对象和监听事件,在比如我们历史上大部分时间皇帝都是单例唯一的,故此在程序上设计如下,在皇帝对象构造方法是private私有化的,同时创建单例构造方法在首次使用时候初始化,但是在多线程模式下可能会实例化多个,故此可以使用静态块在程序加载便初始化单例对象(饿汉式)。
注意:synchronized同步关键词,线程安全;单例模式,可节约CPU和内存;三层模式下的service和dao;
public class Emperor {private static Emperor emperor = null;private Emperor() {}//懒汉式public static Emperor getInstance() {if(emperor == null) {emperor = new Emperor();}return emperor;}public static void emperorInfo(){System.out.println("我是单例皇帝");}}
public class TestSingleton {private static Emperor emperor;public static void main(String[] args) {emperor = emperor.getInstance();emperor.emperorInfo();}}
