网站首页 > 技术教程 正文
在java中,单例模式的实现方法有如下几种:
1.饿汉模式
所为饿汉模式,即一开始就创建一个静态的对象,之后该对象一直存在。这种模式不会有线程安全问题。
2.懒汉模式
对于饿汉模式,优点在于实现简单。但是存在一个问题就是 instance 只要 Singleton1被加载就会被创建到static所在的静态方法区。如实现数据库连接池等情况,用这种方法一上来就要创建数据库的连接资源,实际系统中暂不使用。这就造成了资源的浪费。因此,对于这种情况,出现了与之对应的懒汉模式。
即一开始并不创建对象,待需要使用时再new。
这是大家想到的最常用的懒汉模式的写法。但是问题来了,上述模式在多线程的情况下是线程不安全的!也就是说,如果有两个线程,同时getInstance(),同时都会判断instance的值为null。这种情况下会创建多个实例。
为了解决上述问题,我们引入了锁:
上面这种做法,确实解决了线程安全问题,但是带来了一个更加不好的问题,那就是每一次请求都会加锁!这样会严重影响性能。更好的做法是采用双重检查机制:
这样才完美解决了单例模式的坑。当然,如果阅读过《effective java》这本书,就会知道对于单例模式还有一种更简单的写法,那就是枚举。
3.枚举单利
因为在java中,枚举天然实现了单例模式。
可以很容易的将上述枚举类改造之后运用到所需的场景中。
作品来源:简书
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群346942462,我们一起学Java!
猜你喜欢
- 2024-10-02 深入浅出经典java架构设计方法 深入浅出经典java架构设计方法
- 2024-10-02 IT技术交流:Java 轻量级整合开发 java轻量化ide
- 2024-10-02 java中的单例模式 java中的单例模式代码
- 2024-10-02 Java内部类浅析 java内部类的类型
- 2024-10-02 java基础数据结构分析 java 基础数据结构
- 2024-10-02 一个简单的Swing窗口程序——Java
- 2024-10-02 Java妹子与数据库老头之间的交流 java与数据库的连接怎么实现
- 2024-10-02 Java初学笔记-分享交流 java初学者教程视频
- 2024-10-02 好用到爆的 Java 技巧 java小技巧
- 2024-10-02 深入理解JVM 系列JVM运行机制 JVM内存模(volatile,指令重排)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)