当前位置: 首页 > news >正文

单例模式(懒汉式)

package com.itmc.web;/*** @Author: yhf* @Date: 2026/3/21 13:45** 单例模式(懒汉式)-基础版*/
public class LocalCourseInterface {// 1. 私有静态实例变量【懒加载: 实例变量localCourseInterface初始值为null,只有第一次调用getInstance()时才会创建实例,节省内存】private static LocalCourseInterface localCourseInterface;// 2. 私有化构造方法,禁止外部创建实例【单例模式的核心,确保外部类无法通过new关键字创建该类的实例,只能通过getInstance()方法获取唯一实例】private LocalCourseInterface() {}// 3. 获取实例的公共静态方法【synchronized线程安全:保证多线程环境下只有一个线程能进入方法创建实例,避免重复实例化】public static synchronized LocalCourseInterface getInstance() {if (localCourseInterface == null) {localCourseInterface = new LocalCourseInterface();}return localCourseInterface;}public String fun1() {return "fun1";}public String fun2() {return "fun2";}/*外部类调用此类方法方式:LocalCourseInterface instance = LocalCourseInterface.getInstance();String res = instance.fun1();*/}

package com.itmc.web;/*** @Author: yhf* @Date: 2026/3/21 13:49** 单例模式(懒汉式)-进阶版* 如果对性能要求较高,比如频繁调用 getInstance(),为避免每次调用都加锁,可使用双重检查锁(DCL)进行优化** 单例模式的核心是私有化构造方法 + 提供静态方法获取唯一实例;* 基础懒汉式单例需加 synchronized 保证线程安全,进阶可使用双重检查锁(DCL)提升性能;* volatile 关键字用于解决 DCL 模式下的指令重排问题,确保实例初始化完整。*/
public class LocalCourseInterfaceV2 {// 优化点2、volatile关键字防止DCL指令重排,保证实例初始化完成后才被读取private static volatile LocalCourseInterfaceV2 localCourseInterfaceV2;private LocalCourseInterfaceV2() {}// 优化点1、DCL双检锁避免每次调用都加锁public static LocalCourseInterfaceV2 getInstance() {// 第一次检查:未创建实例时才加锁,减少锁竞争if (localCourseInterfaceV2 == null) {synchronized (LocalCourseInterfaceV2.class) {// 第二次检查:防止多线程等待锁后重复创建if (localCourseInterfaceV2 == null) {localCourseInterfaceV2 = new LocalCourseInterfaceV2();}}}return localCourseInterfaceV2;}}
http://www.jsqmd.com/news/512749/

相关文章:

  • C语言学习与未来规划
  • 高效HR的AI工具箱:21个精准提示词,重塑核心工作流(即拿即用版)
  • RDMA-InfiniBand和RoCEv2
  • 电动船舶在线监测管理系统方案
  • 3.21小测
  • 告别模型部署踩坑!Transformers 权威验证模型完整性全流程(通用版)
  • CSS进阶指南:深入解析选择器优先级与继承机制
  • 逆向工程师必备:用Frida动态分析AES/DES/RSA的N种姿势
  • 基于离散余弦变换的感知哈希算法:原理、实现与工程实践
  • MySQL 中 InnoDB 存储引擎与 MyISAM 存储引擎的区别是什么?
  • 实验二 网络信息收集
  • Mysql锁机制与优化实践以及MVCC底层原理剖析--重点笔记
  • CTF刷题神器大比拼:在线工具vs本地软件哪个更适合你?
  • 多周期信号互掐?FXVC带你理清信号,找准核心分析逻辑
  • AI赋能绩效评估:用智能工具与策略做出更精准的人才决策
  • Redis 入门与实践:从基础到 Stream 消息队列
  • 不用写代码!用Cherry Studio+Ollama打造行业专属GPT助手(含30+预置模板调参心得)
  • 产生式表示法
  • 2026年高口碑AIGC短剧制作出海服务商推荐榜单
  • 无线网Wi-Fi简介
  • STP 生成树协议课程课后总结
  • 第四篇:嵌入式系统常用通信接口详解(I2C、SPI、UART、RS232/485、CAN、USB)
  • 满载效率|D100运载无人机实测
  • 盒模型深度解剖:标准盒模型与怪异盒模型的区别
  • MySQL 的查询优化器如何选择执行计划?
  • 基于Python的黑龙江旅游景点数据分析系统的实现_flask+spider
  • ERP系统
  • 2026年国贤府PARK价格深度解析:价值锚点与市场前景研判 - 十大品牌推荐
  • Vue3 + vxe-table 实战:如何用工具栏模式实现ERP系统的列个性化记忆功能?
  • 天猫下单,门店换货;全渠道售后“此刻更丝滑”!商派Omni-OMS系统助力