单例模型
定义:保证一个类仅有一个实例,并且提供一个全局访问点
类型:创建型
单例-使用场景
想确保任何情况下都绝对只有一个实例
优点
在内存里只有一个实例,减少了内存开销
可以避免对资源的多重占用
设置全局访问点,严格控制访问
缺点
没有接口,需要扩展代码
单例-懒汉型
懒汉模式是线程不安全的,当两个线程访问,是线程不安全。验证线程不安全 实现Runnable 在Test类运行Tread
避免线程不安全方式
使用synchronized解决此问题 但是synchronized有额外的锁开销。使用doubleCheck方式解决额外的开销
在单例中的单线程下的Double Check的执行
使用volatile关键字使内存共享,完全解决懒汉模式的线程不安全问题