设计模式—单例
作用
保证一个类只有一个实例,并且提供一个访问实例的全局访问点
饿汉式
简单实用,推荐使用!
唯一缺点:不管用到与否,类装载时就完成实例化,如果实际没调用,则会造成资源浪费!
懒汉式
什么时候用,什么时候初始化对象
方法锁
在方法上添加synchronized关键字,保证多线程安全,但对性能的影响比较大
双重检查
相比方法锁,通过减小同步代码块的方式提高效率
不加volatile会有什么问题?
实例化的过程
- 分配内存空间
- 执行构造方法,实例化对象
- 把这个对象赋值给这个空间
如果不加volatile,会执行重排序,比如过程变成了132,这个可能导致其它调用拿到的是未完全实例化的对象
静态内部类
通过JVM保证单例,加载外部类时不会加载内部类,这样可以实现懒加载
枚举
不仅可以解决线程同步,还可以防止反序列化
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具