JAVA单例模式:懒汉式,饿汉式
今天复习了一下java的单例模式,写了懒汉式和饿汉式的实现例子。代码如下:
1.懒汉式单例
package com.lf.shejimoshi; /** * @classDesc: 类描述:(懒汉式单例测试类) * @author baobaolan * @createTime 2018年1月10日 * @version v1.0 */ public class SingletonTest { /** * @functionDesc: 功能描述:(测试懒汉式单例模式) * @author baobaolan * @createTime 2018年1月10日 * @version v1.0 */ public static void main(String[] args) { Student s1 = Student.getStudent(); Student s2 = Student.getStudent(); System.out.println(s1==s2); } } /** * @classDesc: 类描述:(学生类) * @author baobaolan * @createTime 2018年1月10日 * @version v1.0 */ class Student{ //定义全局变量 private static Student student; //私有化构造函数 private Student(){ } /** * @functionDesc: 功能描述:(对外暴露方法) * @author baobaolan * @createTime 2018年1月10日 * @version v1.0 */ public static Student getStudent(){ if(student==null){ //加上同步锁,保证线程安全 synchronized(Student.class){ student = new Student(); } } return student; } }
2.饿汉式单例
package com.lf.shejimoshi; /** * @classDesc: 类描述:(测试类) * @author baobaolan * @createTime 2018年1月10日 * @version v1.0 */ public class Singleton2Test { public static void main(String[] args) { Teacher teacher1 = Teacher.getTeacher(); Teacher teacher2 = Teacher.getTeacher(); System.out.println(teacher1==teacher2); } } /** * @classDesc: 类描述:(饿汉式单例) * @author baobaolan * @createTime 2018年1月10日 * @version v1.0 */ class Teacher{ //类加载的时候初始化一次 private static final Teacher teacher = new Teacher(); //私有化构造函数 private Teacher(){ super(); } /** * @functionDesc: 功能描述:(对外暴露的方法) * @author baobaolan * @createTime 2018年1月10日 * @version v1.0 */ public static Teacher getTeacher(){ return teacher; } }
3.总结
懒汉式线程不安全,需要加上同步锁,同步锁影响了程序执行效率。
饿汉式天生线程安全,类加载的时候初始化一次对象,效率比懒汉式高。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效