1.单例模式考点:
手写单例模式 |
2.什么是单例模式
单例类在整个程序中只能有一个实例,这个类负责创建自己的对象 |
3. 饿汉式:线程安全,反序列和反射不安全
package com.feicheng.bean; |
4. 登记式:线程安全,是一个加强版的饿汉式,防止反射攻击,反序列化安全,支持反序列化
package com.feicheng.bean; |
5. 枚举式:线程安全,防止反射攻击
package com.feicheng.bean; |
6.懒汉式:线程不安全,延迟加载,(两种加同步,效率低)
7. 双检索:线程安全,需要在类上添加Volatile
package com.feicheng.bean; |
|
8.ThreadLocal:在一个线程里面是单列的,但在不同的线程里面是多列的 不加锁,以空间换时间,为每个线程提供变量的独立副本,可以保证各自线程中是单例的,但不同线程中不保证
package com.feicheng.bean; |
9. CAS:无锁乐观策略,线程安全
package com.feicheng.bean; |
10. 总结:
*饿汉式:线程安全、反射不安全、反序列化不安全 |