java的单例设计模式

ops/2024/11/14 7:37:34/

Java中的单例设计模式是一种创建对象的设计模式,用于保证在整个应用程序的生命周期中只创建一个实例对象。

在Java中,有多种方式可以实现单例设计模式,以下是最常用的几种方式:

  1. 饿汉式单例模式:在类加载时就创建实例对象。该方式保证了线程安全,但是在整个应用程序生命周期中都会存在实例对象,可能会占用较多的内存空间。
java">public class Singleton {private static final Singleton instance = new Singleton();private Singleton() {}public static Singleton getInstance() {return instance;}
}

  1. 懒汉式单例模式:在第一次访问时才创建实例对象。该方式在多线程环境下可能存在线程安全问题,需要进行额外的线程安全处理。
java">public class Singleton {private static Singleton instance;private Singleton() {}public static synchronized Singleton getInstance() {if (instance == null) {instance = new Singleton();}return instance;}
}

  1. 双重检验锁单例模式:在第一次访问时才创建实例对象,并使用双重检验锁来确保线程安全。
java">public class Singleton {private volatile static Singleton instance;private Singleton() {}public static Singleton getInstance() {if (instance == null) {synchronized (Singleton.class) {if (instance == null) {instance = new Singleton();}}}return instance;}
}

  1. 静态内部类单例模式:使用静态内部类来实现单例模式,确保懒加载和线程安全。
java">public class Singleton {private Singleton() {}private static class SingletonHolder {private static final Singleton instance = new Singleton();}public static Singleton getInstance() {return SingletonHolder.instance;}
}

上述是Java中常用的几种单例设计模式的实现方式,根据具体的需求和场景选择合适的方式。


http://www.ppmy.cn/ops/132886.html

相关文章

单片机串口接收状态机STM32

单片机串口接收状态机stm32 前言 项目的芯片stm32转国产,国产芯片的串口DMA接收功能测试不通过,所以要由原本很容易配置的串口空闲中断触发DMA接收数据的方式转为串口逐字节接收的状态机接收数据 两种方式各有优劣,不过我的芯片已经主频跑…

数据结构---排序总结

1.排序的时间复杂度(均为平均值) O(n^2) :冒泡排序,选择排序,插入排序。 O(n * log(n)):堆排序,快速排序,归并排序。 O(n^1.3):希尔排序 2.空间复杂度: O(n) …

gitlab ci/cd搭建及使用笔记

记录下使用gitlab的ci/cd的devops构建过程中,一些易忘点或者踩坑点: 官方文档中英文(建议英文) https://docs.gitlab.com/ee/ci/yaml/artifacts_reports.html https://gitlab.cn/docs/jh/ci/pipelines/schedules.html为什么创建了…

Spring Boot实战:SSO和OAuth2.0

SSO和OAuth2.0 SSO(单点登录)和OAuth 2.0 是两个在认证和授权场景中常用的技术概念。它们的应用场景、目标和工作机制不同,但在一些方面也有联系。以下是它们的区别和联系的详细分析。 一、SSO(Single Sign-On) 1.1…

【vue2.0入门】初始化vue工程

目录 引言一、前期准备1. 熟悉如何调起控制台1.1 全局打开控制台1.2 指定目录打开控制台1.3 推荐使用vscode集成控制台 2. 设置npm镜像3. 安装vue脚手架工具 二、创建vue工程1. 利用vue-cli创建工程2. 启动项目3. 打包项目 三、总结 引言 本系列教程旨在帮助一些零基础的玩家快…

pdf添加目录标签python(手动配置)

先安装对应的库: pip install pypdf 代码分为两个部分,一部分是config.py,代码如下: offset=10 catgorys=[("第一章",12),("第二章",45), ] 需要自己手动更改offset,和目录列表 下面是主要代码: import pypdf # import sys from config import…

linux命令详解,存储管理相关

存储管理 一、内存使用量,free free 命令是一个用于显示系统中物理内存(RAM)和交换空间(swap)使用情况的工具 free -m free -m -s 5参数 -b 功能: 以字节(bytes)为单位显示内存使用情况。说…

软件工程 软考

开发大型软件系统适用螺旋模型或者RUP模型 螺旋模型强调了风险分析,特别适用于庞大而复杂的、高风险的管理信息系统的开发。喷泉模型是一种以用户需求为动力,以对象为为驱动的模型,主要用于描述面向对象的软件开发过程。该模型的各个阶段没有…