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

创建单例模式的六种方式

一、单例模式

  1. 单例模式是一种创建型的设计模式,构造函数是私有的,因此只能在类中创建一个实例,且对外提供一个静态公有方法获取这个实例。

二、创建方法

1. 懒汉式(线程不安全)

public class Singleton{private static Singleton instance;private Singleton(){}public static Singleton getInstance(){if(instance==null){ //多线程时,此处会产生线程安全问题instance = new Singleton();}return instance;}
}

2. 懒汉式(线程安全)

public class Singleton{private static Singleton instance;private Singleton(){}public synchronized static Singleton getInstance(){if(instance==null){instance=new Singleton();}return instance;}

3. 双重检查锁(DCL,Double-Checked Locking)(线程安全)

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;}
}

4. 饿汉式(线程安全)

public class Singleton{private final static Singleton instance=new Singleton();private Singleton(){}public static Singleton getInstance(){return instance;}

5. 静态内部类(线程安全)

public class Singleton{private Singleton(){}private static class InnerClass{private final static Singleton INSTANCE=new Singleton();} public static Singleton getInstance(){return InnerClass.INSTANCE;}
}

6. 枚举类(线程安全)

public enum Singleton{INSTANCE;public void doSomething(String str){System.out.println(str);}
}

相关文章:

创建单例模式的六种方式

一、单例模式 单例模式是一种创建型的设计模式,构造函数是私有的,因此只能在类中创建一个实例,且对外提供一个静态公有方法获取这个实例。 二、创建方法 1. 懒汉式(线程不安全) public class Singleton{private st…...

实用软件下载:CrossOver 2024最新安装包及详细安装教程

​根据软件大数据显示上传或者手动输入软件都非常简单,一般来说CrossOver会自动连接到一个Win文件共享服务器(Samba或CIFS)上,使用者能够直接在这个服务器中选择并上传软件执行文件。实际上我们可以这样讲调整CrossOver设置&#…...

开启调试模式

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 run()方法虽然适用于启动本地的开发服务器,但是每次修改代码后都要手动重启它。这样并不够方便,如果启用了调试支持&#xff…...

pygame 绘制一个大黑脸

# 编写一个Python程序,实现一个眨眼的动画效果。该动画效果应该在屏幕上显示一个人脸,并在一定的时间间隔内使眼睛闭合和睁开。 import pygame import timepygame.init() # 设置窗口大小 screen_width 800 screen_height 600 screen pygame.display.s…...

XMLXXE实体注入

XML&XXE实体注入 原理 XML被设计为传输和存储数据,XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具。等同于JSO…...

艺术家电gorenje x 设计上海丨用设计诠释“生活的艺术”

2024年6月19日—22日,艺术家电gorenje亮相“设计上海”2024,以“gorenje是家电更是艺术品”为题,为人们带来融入日常的艺术之美。设计上海2024不但汇集了国内外卓越设计品牌和杰出独立设计师的家具设计作品,还联合国内外多名设计师…...

【刷题篇】链表

文章目录 1、两数相加2、两两交换链表中的节点3、 重排链表4、 合并 K 个升序链表5、 K 个一组翻转链表 1、两数相加 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数…...

若依框架,小程序访问后端,后端访问客户端,客户端读取图片返回

服务端代码: import org.springframework.core.io.InputStreamResource; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; …...

os7安装gitlab

gitlab安装要求:os7以上版本,4G内存,磁盘50GB 1.克隆 由于我这里不想影响原来的,所以这里克隆一个os系统。如果其他是第一次安装则不用。 2.修改ip地址 cd /etc/sysconfig/network-scriptsvi ifcfg-ens33 按:insert…...

木头姐:将出于经济方面的考虑支持特朗普

美国投资公司Ark Invest的首席执行官凯西•伍德表示,她计划在今年的总统选举中投票给共和党候选人、美国前总统唐纳德•特朗普。 “就像我对我的孩子们说的……就像我对他们说的,‘听着,我要把票投给能为我们的经济做得最好的人。’伍德周末…...

sql注入登陆绕过

此列表包含通过XPath、LDAP和SQL注入绕过登录的有效负载(按此顺序)。 使用此列表的方法是将前200行作为用户名和密码。然后,先将完整的列表放入用户名中,然后放入密码输入,同时放入一些密码(如Pass1234)或一些已知的用户名(如admin)。 admin password 1234 123456 root to…...

QT利用QGraphicsDropShadowEffect效果及自定义按钮来实现一个炫酷键盘

1、效果 2、核心代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent<...

机器学习(一)

机器学习 1.机器学习概述1.1 人工智能概述1.1.1 机器学习与人工智能、深度学习的关系1.1.2 人工智能的起点1.1.3 机器学习、深度学习能做什么&#xff1f; 1.2 什么是机器学习&#xff1f;1.2.1 定义1.2.2 数据集的构成 1.3 机器学习算法1.4 机器学习开发流程 2.特征工程2.1 数…...

【深度学习】python之人工智能应用篇——图像生成技术(一)

说明&#xff1a; 两篇文章根据应用场景代码示例区分&#xff0c;其他内容相同。 图像生成技术&#xff08;一&#xff09;&#xff1a;包含游戏角色项目实例代码、图像编辑和修复任务的示例代码和图像分类的Python代码示例 图像生成技术&#xff08;二&#xff09;&#xff1a…...

java 非srping 使用r2dbc操作mysql 增删改查代码

要在Java中使用R2DBC操作MySQL&#xff0c;首先需要添加相关依赖。在Maven项目中&#xff0c;可以在pom.xml文件中添加以下依赖&#xff1a; <dependency><groupId>dev.miku</groupId><artifactId>r2dbc-mysql</artifactId><version>0.8.…...

假冒国企现形记:股权变更视角下的甄别分析

启信慧眼-启信宝企业版 假冒国企公告2024-06-07&#xff0c;中粮集团有限公司官网发布《关于冒名中粮企业名单公告》。公告显示&#xff0c;”有不法分子通过伪造相关材料等方式&#xff0c;以我集团子公司名义开展业务&#xff0c;进行虚假宣传。经核实&#xff0c;上述公司假…...

Django 使用Apscheduler执行定时任务

Apscheduler 介绍 核心组件&#xff1a; 调度器、作业存储、执行器、触发器 调度器 BlockingScheduler 阻塞的调度器&#xff0c;适用于脚本 BackgroundScheduler 后台调度器&#xff0c;适用于非阻塞的应用如Web应用 AsyncIOScheduler 适用于 asyncio 的调度器 GeventSchedu…...

Shopee API接口:获取搜索栏生成的商品结果列表

一、引言 此接口可以高效获取搜索栏生成的商品结果列表。本文将详细介绍这一核心功能&#xff0c;并探讨其在实际应用中的价值。 二、核心功能介绍——获取搜索栏生成的商品结果列表 请求API及返回示例 http://api.xxxx.com/sp/ll/search/item?keywordiphone&page1&am…...

选择门店收银系统要考虑哪些方面?美业系统Java源码分享私

开店前的一个重要事件就是选择门店收银软件/系统&#xff0c;尤其是针对美容、医美等美业门店&#xff0c;一个优秀专业的系统十分重要&#xff0c;它必须贴合门店的经营需求&#xff0c;提供更全面、便捷、高效的管理功能&#xff0c;帮助提升门店的服务质量和经营效益。 以下…...

智慧养老的养老方式及其技术实现与趋势

智慧养老是一种借助现代信息技术手段&#xff0c;为老年人提供更高效、便捷、个性化服务的养老模式。以下是一些常见的智慧养老方式&#xff1a; 1. 远程健康监测系统 通过智能穿戴设备&#xff0c;如手环、手表等&#xff0c;实时收集老年人的生理数据&#xff0c;如心率、血…...

Cyber Engine Tweaks完整指南:5步掌握《赛博朋克2077》终极脚本框架

Cyber Engine Tweaks完整指南&#xff1a;5步掌握《赛博朋克2077》终极脚本框架 【免费下载链接】CyberEngineTweaks Cyberpunk 2077 tweaks, hacks and scripting framework 项目地址: https://gitcode.com/gh_mirrors/cy/CyberEngineTweaks Cyber Engine Tweaks是一个…...

基于APScheduler的定时提醒服务设计与Python实现

1. 项目概述与核心价值最近在折腾一个名为rogerwus/Noonwake_test的项目&#xff0c;这名字乍一看有点神秘&#xff0c;像是某个内部测试或者个人实验性质的仓库。作为一名常年泡在代码仓库里的开发者&#xff0c;我对这类项目标题背后的故事和技术探索总是充满好奇。经过一番深…...

Arm DSTREAM调试接口设计与JTAG/SWD协议详解

1. Arm DSTREAM系统与调试接口设计指南1.1 调试接口技术基础1.1.1 JTAG协议架构解析JTAG&#xff08;Joint Test Action Group&#xff09;标准IEEE 1149.1定义了五线制调试接口&#xff1a;TCK&#xff1a;测试时钟&#xff0c;同步所有JTAG操作TMS&#xff1a;测试模式选择&a…...

生成式 AI 的未来是具有代理性的:你需要了解的信息

原文&#xff1a;towardsdatascience.com/the-future-of-generative-ai-is-agentic-what-you-need-to-know-01b7e801fa69...

okbiye AI 写作新思路:毕业论文终稿一站式落地,不用熬夜硬熬

okbiye-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPT毕业论文 - Okbiye智能写作https://www.okbiye.com/ai/bylw 开篇引言 每到毕业季&#xff0c;毕业论文总会成为无数大学生最头疼的一道关卡。选题没方向、框架搭不起来、正文写不出深度、重复率居高不…...

终极Vue 3日期时间选择器:如何构建企业级日期处理解决方案

终极Vue 3日期时间选择器&#xff1a;如何构建企业级日期处理解决方案 【免费下载链接】vue3-date-time-picker Datepicker component for Vue 3 项目地址: https://gitcode.com/gh_mirrors/vu/vue3-date-time-picker Vue3-DateTime-Picker是一个基于Vue 3 Composition …...

Armbian重置前的数据保卫战——备份与迁移的5层防护策略

备份就像买保险——平时觉得麻烦,出事时觉得买少了。 引言:那个让我彻夜未眠的晚上 凌晨三点,我的香橙派突然失联了。 SSH连不上,ping不通,插显示器一看——文件系统只读,内核panic。前一天刚折腾完Docker网络配置,手贱改了个内核参数,重启后直接翻车。 那一刻,我脑…...

3步解放暗黑2存档:Diablo Edit2角色编辑器完全指南

3步解放暗黑2存档&#xff1a;Diablo Edit2角色编辑器完全指南 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 你是否曾因暗黑破坏神2角色build失误而懊恼&#xff1f;是否厌倦了数百小时刷装备却…...

DeepSeek MMLU 86.7分是怎么炼成的?从提示工程、校准策略到知识蒸馏链路(内部训练日志首次公开)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek MMLU 86.7分的里程碑意义与基准解读 MMLU 基准的本质与挑战 MMLU&#xff08;Massive Multitask Language Understanding&#xff09;是一项覆盖57个学科领域的综合性评测基准&#xff0c;涵…...

全志T113-S3 SPI屏幕驱动踩坑实录:内核5.4下适配ILI9341的完整流程与代码修改

全志T113-S3 SPI屏幕驱动深度解析&#xff1a;内核5.4适配ILI9341的实战指南 在嵌入式开发领域&#xff0c;显示设备的驱动适配一直是工程师面临的核心挑战之一。全志T113-S3作为一款性价比突出的处理器&#xff0c;广泛应用于各类嵌入式场景&#xff0c;而ILI9341驱动的SPI屏幕…...