赞
踩
加油,新时代打工人!
简单粗暴,学习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(); } }
通过运行结果看,两个线程的地址值是相同的,说明内存空间里,创建了一个对象。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。