设计模式之单例模式
单例模式是各场景下常用的一种模式。 安全的double check的实现 注意点 构造函数为private修饰,不让外部直接调用创建类 两次if判断instance是否为空。第一层是为了判断如果instance存在直接返回,第二层在synchronized内判断是为了解决当一个线程进入,另外排队等待锁的线程在第一个线程释放锁之后重复创建instance对象。 volatile为了解决禁止指令重排序。instance = new instance 在jvm实际上分为三步,1分配空间,2初始化对象,3分配引用。 在jvm实际执行会存在优化的情况,执行顺序可能有123,132。volatile可以禁止指令重排序。 最后volatile的作用, 禁止指令重排序 内存可见性 来源: oschina 链接: https://my.oschina.net/u/2250599/blog/3176221