当前位置: 首页 > 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;}
}

http://www.xdnf.cn/news/579583.html

相关文章:

  • 【Linux】了解 消息队列 system V信号量 IPC原理
  • 常见字符串相似度算法详解
  • 使用Pandoc实现Markdown和Word文档的双向转换
  • 基于LiveData和ViewModel的路线管理实现(带PopupWindow删除功能)
  • 人工智能价值:技术革命下的职业新坐标
  • 【java】Java注解
  • 通信协议详解(分层技术解析)
  • 4-码蹄集600题基础python篇
  • 16、Python运算符全解析:位运算实战、字符串拼接与列表合并技巧
  • 如何在电脑上登录多个抖音账号?多开不同IP技巧分解
  • 【Redis】AOF日志
  • 8天Python从入门到精通【itheima】-26~28
  • CondaEnvException: The specified prefix appears to be a top level directory
  • 图论算法精解(Java 实现):从基础到高频面试题
  • 单链表C语言实现
  • Web项目流程总结
  • 第七章:数据存储策略与状态恢复机制实录
  • Bently Nevada 3500/61 非隔离I/O模块 (133819-02)
  • 一命通关单调栈
  • 工业轴承故障检测技术现状:中国智造的突破与挑战
  • 微信小程序自行diy选择器有效果图
  • 第20天-python生成word文档
  • 《MQTT 从 0 到 1:原理、实战与面试指南全解》
  • PostgreSQL相比Oracle有哪些优势?
  • 一朵由钢片织成的云 ——超“限”的结构
  • 精通Python:使用Pandas进行数据处理与分析
  • PortgreSQL常用操作
  • AI应用电商篇汇总(持续补充)
  • 让蜂鸣器报警并退出
  • 判断一个元素是否在可视区域