java怎么实现单例模式
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要讲解了"java怎么实现单例模式",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"java怎么实现单例模式"吧!要点某个类只能有一个实例构造器
千家信息网最后更新 2026年11月01日java怎么实现单例模式
这篇文章主要讲解了"java怎么实现单例模式",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"java怎么实现单例模式"吧!
要点
某个类只能有一个实例
构造器私有化
它必须自行创建这个实例
含有一个该类的静态变量来保存这个唯一实例
必须自行先整个系统提供这个实例
对外提供获取该实例对象的方式
直接暴露
用静态变量的 get 方法获取
常见几种形式
饿汉式:直接创建对象不存在线程安全问题
直接实例化饿汉式(简洁直观)
枚举式(最简洁)
静态代码块饿汉式(适合复杂实例化)
懒汉式:延迟创建对象
线程不安全(适用于单线程)
线程安全(适用于多线程)
静态内部列形式(适用于多线程)
直接实例化对象,不管是否需要这个对象-饿汉式
/** 饿汉式*(1)构造器私有化*(2)自行创建,并用静态变量保存*(3)向外提供这个实例*(4)强调这是单例,用final修饰(这个变量只能赋值一次,之后不能修改)*/public class Singleton1 { public static final Singleton1 INSTANCE = new Singleton1(); private Singleton1 (){ }}枚举-jdk1.5之后-饿汉式
/**饿汉式*枚举类型:表示该类型的对象是有限的几个*我们可以限定为一个,就成了单例*/public enum Singleton2{ INSTANCE}静态代码块-饿汉式
/** 这种方式,适合那种需要从配置文件里面读一堆信息来实例化。*/public class Singleton3 { public static final Singleton3 INSTANCE; private String info; static { try { Properties pro = new Properties(); // 从位于src目录下的配置文件single.properties中读取信息 pro.load(Sinfleton3.class.getClassLoader().getResourceAsStream("single.properties")); INSTANCE = new Singleton3(pro.getPropertied("info")); }catch(IOExcepption e){ throw new RuntimeException(e); } } private Singleton3 (String info){ this.info = info; }}4.线程不安全(适合单线程)-懒汉式
/** 懒汉式*(1)构造器私有化*(2)静态变量保存*(3)提供一个静态方法,获取实例对象*/public class Singleton4 { private static Singleton4 instance; private Singleton4 (){ } public static Singleton4 getInstance(){ if(instance == null){ //加上Thread.sleep(100);多线程情况下 会实例化两个对象。 instance = new Singleton4(); } return instance; }}线程安全(适合多线程)-懒汉式
/** 懒汉式*(1)构造器私有化*(2)静态变量保存*(3)提供一个静态方法,获取实例对象*/public class Singleton5 { private static Singleton5 instance; private Singleton5 (){ } public static Singleton5 getInstance(){ if(instance == null){//先判断是否为空,再进行加锁。 synchronized(Singleton5.class){ //加上Thread.sleep(100);多线程情况下 会实例化两个对象。 instance = new Singleton5(); } } return instance; }}静态内部类形式
/** 再内部类被加载和初始化时,才创建INSTANCE实例对象* 静态内部类不会自动随着外部类的加载和初始化而初始化,它是要单独去加载和初始化的* 因为是在内部类加载和初始化是,创建的,因此是线程安全的。*/public class Singleton6 { private Singleton6 (){ } private static class Inner{ private static final Singleton6 INSTANCE = new Singleton6(); } public static Singleton6 getInstance(){ return Inner.INSTANCE; }}感谢各位的阅读,以上就是"java怎么实现单例模式"的内容了,经过本文的学习后,相信大家对java怎么实现单例模式这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
实例
线程
静态
对象
安全
变量
懒汉
模式
构造器
私有
形式
情况
方法
学习
简洁
两个
代码
信息
内容
文件
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
科技互联网产品
互联网科技的发展
上海挚品互联网科技
远信互联网科技
撒么互联网科技公司
联恩商钥互联网科技有限公司
青岛中康互联网医疗科技有限公司
互联网科技博主是什么意思
广州恒生互联网科技有限
互联网科技创新服务
哈尔滨屹滨互联网科技有限公司
互联网行业科技股
深圳市罗太互联网科技有限公司
互联网金融科技名词解释
烟台灵鸽互联网科技有限公司
互联网方面的科技前沿
互联网营销推广黑科技
深圳互联网科技园地址
瑞安市蟠桃会互联网科技有限公司
互联网 科技节活动 微视频大赛
精品咖啡豆
苏州找大状互联网科技有限公司
麻工互联网科技
电子科技大学互联网
联恩商钥互联网科技有限公司
剑昆互联网络科技有限公司临桂
互联网和黑科技的看法
米泉互联网科技专业怎么样
青岛易易互联网科技
长沙易易互联网科技有限公司