【Java中23种设计模式-单例模式2--懒汉式2线程安全】

加油,新时代打工人!

简单粗暴,学习Java设计模式。

23种设计模式定义介绍

Java中23种设计模式-单例模式

Java中23种设计模式-单例模式2--懒汉式线程不安全

java 复制代码
package mode;

/**
 * @author wenhao
 * @date 2024/02/19 09:38
 * @description 单例模式--懒汉式 线程安全
 * 是否 Lazy 初始化:是
 * 是否多线程安全:是
 * 这种方式具备很好的 lazy loading,能够在多线程中很好的工作,但是,效率很低,99% 情况下不需要同步。
 * 优点:第一次调用才初始化,避免内存浪费。
 * 缺点:必须加锁 synchronized 才能保证单例,但加锁会影响效率。
 * getInstance() 的性能对应用程序不是很关键(该方法使用不太频繁)。
 */
public class SingleMode2 {
	private SingleMode2() {
	}

	private static volatile SingleMode2 singleMode2;

	public static  SingleMode2 getInstance() {
		if (singleMode2 == null) {
			synchronized (SingleMode2.class){
				if(singleMode2 ==null){
					singleMode2 = new SingleMode2();
				}
			}
		}
		return singleMode2;
	}

	public static void main(String[] args) {
		new Thread(() -> {
			SingleMode2 instance1 = getInstance();
			System.out.println(instance1);
		}).start();

		new Thread(() -> {
			SingleMode2 instance2 = getInstance();
			System.out.println(instance2);
		}).start();

	}
}

通过运行结果看,两个线程的地址值是相同的,说明内存空间里,创建了一个对象。

相关推荐
是2的10次方啊4 小时前
设计模式与生活⑰:空腹体检,单子领着人走
设计模式
Wang's Blog6 小时前
Java 项目实战: 交友项目 - FastDFS:入门案例
java·开发语言·交友
apcipot_rain7 小时前
C++转Java日记(03)
java·开发语言·c++
皮皮林5517 小时前
Java实现微信扫码登录
java
Yyyyyy~9 小时前
【Java】Day4Web基础知识
java·spring boot
灿飞屋10 小时前
Kotlin与Java虚拟机三:控制流
android·java·开发语言·后端·python·kotlin·安卓
NE_STOP11 小时前
Spring AI Alibaba - MCP入门
java
nice_lcj52011 小时前
【从零理解 Spring AI · 07】对话记忆:让模型记住上一句说了什么
java·spring ai·ai应用开发·chatmemory·对话记忆
SL_staff12 小时前
制造业交付崩盘?用跨部门节点协同计划打通销售、生产与质量链路
java·开源·产品
文丑颜不良啊13 小时前
LeetCode2261~2280题目解析
java·leetcode