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

Java 实现四种单例(都是线程安全)

前言

单例分为饿汉式和懒汉式:

饿汉式:类加载时就被创建,一种实现

懒汉式:只有需要的时候才创建,三种实现(synchronized 在方法上,synchronized 在代码块上,静态内部类)

Coding

//懒汉式单例,方法上使用 synchronized 来保证现程安全
public class Singleton {//懒汉式private static Singleton instance;private Singleton() {//私有构造方法,防止外部实例化}//使⽤了同步关键字来确保线程安全, 可能会影响性能public static synchronized Singleton getInstance() {if (instance == null) {instance = new Singleton();}return instance;}
}//在懒汉式的基础上,可以使用双重检查锁来提高性能
public class Singleton {private static Singleton instance;private Singleton() {//私有构造方法,防止外部实例化}//在懒汉式的基础上,可以使用双重检查锁来提高性能public static Singleton getInstance() {if (instance == null) {synchronized (Singleton.class) {if (instance == null) {instance = new Singleton();}}}return instance;}
}//在懒汉式的基础上,使用静态内部类,静态内部类在外部类加载时不加载
// 就算我多次调用getInstance,SingletonHolder 类也只会被加载一次(第一次调用时加载)
public class Singleton {// 私有构造方法,防止外部实例化private Singleton() {}// 静态内部类private static class SingletonHolder {// 静态内部类加载时创建单例实例private static final Singleton INSTANCE = new Singleton();}// 获取实例的方法public static Singleton getInstance() {return SingletonHolder.INSTANCE;}
}//饿汉式单例
public class Singleton {private static final Singleton instance = new Singleton();private Singleton(){//私有构造方法,防止外部实例化}public static Singleton getInstance(){return instance;}
}

相关文章:

  • 工程优化大纲
  • 高并发架构设计之限流
  • Linux查 ssh端口号和服务状态
  • 通过 curl 精准定位问题
  • 什么是实时流数据?核心概念与应用场景解析
  • 如果教材这样讲--单片机IO口Additional Functions和 Alternate Functions的区别
  • PaddleOCR的Pytorch推理模块
  • PostgreSQL使用
  • SQL 查询来查看 PostgreSQL的各连接数
  • 海康NVR录像回放SDK原始流转FLV视频流:基于Java的流媒体转码(无需安装第三方插件ffmpeg)
  • upload-labs通关笔记-第16关 文件上传之exif_imagetype绕过(图片马)
  • 软件设计师考试需背诵知识点
  • HarmonyOS NEXT应用开发实战:玩鸿蒙App客户端开发
  • 【图像大模型】Hunyuan-DiT:腾讯多模态扩散Transformer的架构创新与工程实践
  • 【iOS(swift)笔记-10】利用类的继承来实现不同地区语言的显示
  • Mcu_Bsdiff_Upgrade
  • 监督学习与无监督学习区别
  • Python输出与输入
  • ubuntu22.04上运行opentcs6.4版本
  • IP核警告,Bus Interface ‘AD_clk‘: ASSOCIATED_BUSIF bus parameter is missing.
  • 深圳网站建设服务公司/精准ip地址查询工具