【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();

	}
}

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

相关推荐
xiaoye20182 小时前
Lettuce连接模型、命令执行、Pipeline 浅析
java
beata5 小时前
Java基础-18:Java开发中的常用设计模式:深入解析与实战应用
java·后端
Seven976 小时前
剑指offer-81、⼆叉搜索树的最近公共祖先
java
雨中飘荡的记忆1 天前
保证金系统入门到实战
java·后端
Nyarlathotep01131 天前
Java内存模型
java
暮色妖娆丶1 天前
不过是吃了几年互联网红利罢了,我高估了自己
java·后端·面试
NE_STOP1 天前
MyBatis-参数处理与查询结果映射
java
狂奔小菜鸡1 天前
Day40 | Java中的ReadWriteLock读写锁
java·后端·java ee
SimonKing1 天前
JetBrains 用户狂喜!这个 AI 插件让 IDE 原地进化成「智能编码助手」
java·后端·程序员