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

Java6种单例模式写法

单例模式

某个类任何情况下只有一个实例,并提供一个全局访问点来获取该实例。Java6种单例模式:2种懒汉式,2种饿汉式 ,静态内部类 ,枚举类

懒汉式

synchronized+延迟加载

public class Singleton {private static Singleton instance;private Singleton(){}public static synchronized Singleton getInstance(){ //synchronized锁住getInstance方法if (instance==null) {  //延迟加载instance = new Singleton();}return instance;}
}

volatile+synchronized双检锁

public class Singleton {private volatile static Singleton instance; //volatile修饰实例private Singleton(){}public static  Singleton getInstance(){if (instance==null) {synchronized(Singleton.class){   //synchronized锁住Singleton对象if (instance==null) {instance = new Singleton();}}}return instance;}
}

饿汉式—类加载时触发实例化,避免了多线程同步问题

类加载时初始化静态实例

public class Singleton {private static Singleton instance = new Singleton(); //类加载时初始化静态实例private Singleton() {}public static Singleton getInstance() {return instance; //直接返回加载好的静态实例}
}

在静态代码块里初始化实例

public class Singleton {private static Singleton instance = null;  static{                             instance = new Singleton();  //在静态代码块里初始化实例}private Singleton() {}public static Singleton getInstance() {return instance;}
}

静态内部类方式—实现了延迟加载

调用静态内部类时,在静态内部类里初始化实例

public class Singleton {//定义静态内部类private static class InnerSingleton {private static final Singleton INSTANCE = new Singleton(); //初始化完成Singleton类静态实例}private Singleton() {}public static Singleton getInstance() {return InnerSingleton.INSTANCE; //返回静态内部类里的静态实例}
}

枚举类方式–既能避免多线程同步问题,又能防止反序列化重新创建对象

创建一个枚举,枚举成员为INSTANCE。使用枚举类.INSTANCE即可获取实例

package acc;public enum Singleton {INSTANCE; //定义1个唯一的成员INSTANCE//枚举类里的公共方法public  void  doSomething() {System.out.println("r2323t23");}
}public class TestSingleton {public static void main(String[] args) {//使用枚举类.INSTANCE即可获取实例Singleton.INSTANCE.doSomething();}
}

相关文章:

Java6种单例模式写法

单例模式 某个类任何情况下只有一个实例,并提供一个全局访问点来获取该实例。Java6种单例模式:2种懒汉式,2种饿汉式 ,静态内部类 ,枚举类懒汉式 synchronized延迟加载 public class Singleton {private static Sing…...

Direct3D拾取

假设在屏幕上单击,击中的位置为点s(x,y)。由图可以看出,用户选中了茶壶。但是仅给出点s,应用程序还无法立即判断出茶壶是否被选中。所以针对这类问题,我们需要采用一项称为“拾 取(Picking)”的技术。 茶壶和屏幕点s之间的一种联…...

大洋钻探系列之二IODP 342航次是干什么的?(上)

本文简单介绍一下大洋钻探IODP 342航次,从中,我们一窥大洋钻探航次的风采。 IODP342的航次报告在网络上可以下载,英文名字叫《Integrated Ocean Drilling ProgramExpedition 342 Preliminary Report》,航次研究的主要内容是纽芬兰…...

离散时间系统模型

离散时间系统模型 离散时间系统模型是表示数字滤波器的方案。MATLAB 科学计算环境支持若干种离散时间系统模型,这些模型将在以下章节中介绍: ​传递函数零极点增益状态空间部分分式展开式(残差形式)二阶节 (SOS)格型结构体卷积矩…...

Nginx学习(在 Docker 中使用 Nginx)

1. 安装Nginx 使用 docker pull nginx 下载最新的 Nginx Docker 镜像。 下载完毕后,使用 docker run -d -p 80:80 --name nginx nginx,即可启动 Nginx 容器。其中,-p 80:80 表示将容器的 80 端口映射到 主机的 80 端口;--name ng…...

【Java】集合(一)单列集合List

1.集合 可以动态保存任意多个对象,并提供了一系列的操作对象的方法:add、remove、set、get等。 2.集合框架体系 分为两大类: 单列集合和双列集合 3.List接口基本介绍 List接口是Collection接口的子接口 List集合类中元素有序&#xff0…...

实战 | 基于卷积神经网络的蘑菇识别微信小程序

一个不知名大学生,江湖人称菜狗 original author: Jacky Li Email : 3435673055qq.com Time of completion:2023.11.13 Last edited: 2023.11.13 导读:其实没啥难的,主要是随手搞了就发出来把,太久没有水过帖子了&…...

如何选择共享wifi项目服务商,需要注意哪些?

在移动互联网时代,无线网络已经成为人们生活中不可或缺的一部分。随着5G时代的到来,共享WiFi项目成为了市场上备受关注的焦点。在众多共享WiFi公司中,如何选择共享wifi项目服务商合作,今天我们就来盘点下哪些公司可靠!…...

ubuntu20.04 MYNTEYE S 相机运行与标定记录

ubuntu20.04 MYNTEYE S 相机运行与标定记录 环境 ubuntu20.04 opencv3.3.1 硬件 mynteye S1030 OpenCV 3.4.3 安装 Jetson Nano小觅相机(MYNT EYE S)开发调试指南 mkdir -p ~/tools/opencv cd ~/tools/opencvgit clone https://github.com/opencv/opencv.git cd opencv/…...

有效降低数据库存储成本方案与实践 | 京东云技术团队

背景 随着平台的不断壮大,业务的不断发展,后端系统的数据量、存储所使用的硬件成本也逐年递增。从发展的眼光看,业务与系统要想健康的发展,成本增加的问题必须重视起来。目前业界普遍认同开源节流大方向,很多企业部门…...

分布式数据库Schema 变更 in F1 TiDB

分布式数据库Schema 变更 in F1 & TiDB 【转载】TiDB 源码阅读系列文章(十七)DDL 源码解析 | PingCAP 上述文章主要叙述了从DDL语句发起到执行的过程,简单介绍了弄一套相同的模式来后台处理数据回填,从而提高DDL的并发度的一…...

图形库篇 | EasyX | 图像处理

图形库篇 | EasyX | 图像处理 图像类型 IMAGE表示图像,用于定义一个图像变量,与导入的图片资源一一对应。 IMAGE img;加载与绘制图像 函数功能函数加载图像void loadimage(IMAGE* pDstImg,LPCTSTR pImgFile,int nwidth = 0,int nHeight = 0,bool bResize = false)绘制图像v…...

AWTK UI 自动化测试工具发布

AWTK UI 自动化 提供了兼容 Appium 的接口,可以使用 Appium 的工具来进行 UI 自动化测试。但是使用起来有点麻烦,用的人不多,所以最终决定开发一个 AWTK 专用的 UI 自动化测试工具。相比 Appium,这个工具有下列特点: …...

Java后端开发——JDBC入门实验

JDBC(Java Database Connectivity)是Java编程语言中用于与数据库建立连接并进行数据库操作的API(应用程序编程接口)。JDBC允许开发人员连接到数据库,执行各种操作(如插入、更新、删除和查询数据&#xff09…...

LCA

定义 最近公共祖先简称 LCA(Lowest Common Ancestor)。两个节点的最近公共祖先,就是这两个点的公共祖先里面,离根最远的那个。 性质 如果 不为 的祖先并且 不为 的祖先,那么 分别处于 的两棵不同子树中&#…...

ts学习02-数据类型

新建index.html <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </h…...

javaSE的发展历史以及openjdk和oracleJdk

1 JavaSE 的发展历史 1.1 Java 语言的介绍 SUN 公司在 1991 年成立了一个称为绿色计划&#xff08;Green Project&#xff09;的项目&#xff0c;由 James Gosling&#xff08;高斯林&#xff09;博士领导&#xff0c;绿色计划的目的是开发一种能够在各种消费性电子产品&…...

【入门Flink】- 10基于时间的双流联合(join)

统计固定时间内两条流数据的匹配情况&#xff0c;需要自定义来实现——可以用窗口&#xff08;window&#xff09;来表示。为了更方便地实现基于时间的合流操作&#xff0c;Flink 的 DataStrema API 提供了内置的 join 算子。 窗口联结&#xff08;Window Join&#xff09; 一…...

【Python Opencv】图片与视频的操作

文章目录 前言一、opencv图片1.1 读取图像1.2 显示图像1.3 写入图像1.4 示例代码 二、Opencv视频2.1 从相机捕获视频获取摄像头一帧一帧读取显示图片VideoCapture 中的get和set函数示例代码 2.2 从文件播放视频示例代码 2.3 保存视频示例代码 总结 前言 在计算机视觉和图像处理…...

【从入门到起飞】JavaAPI—System,Runtime,Object,Objects类

&#x1f38a;专栏【JavaSE】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 &#x1f384;欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f354;System类⭐exit()⭐currentTimeMillis()&#x1f384;用…...

零基础玩转AI春联生成:手把手教你Windows WSL2部署达摩院春联模型

零基础玩转AI春联生成&#xff1a;手把手教你Windows WSL2部署达摩院春联模型 春节将至&#xff0c;家家户户都开始准备贴春联。但每年想一副既传统又有新意的对联可不容易——要么是市场上买的千篇一律&#xff0c;要么自己绞尽脑汁也想不出好句子。今天&#xff0c;我将带你…...

Blender MMD Tools插件完全指南:从入门到精通

Blender MMD Tools插件完全指南&#xff1a;从入门到精通 【免费下载链接】blender_mmd_tools MMD Tools is a blender addon for importing/exporting Models and Motions of MikuMikuDance. 项目地址: https://gitcode.com/gh_mirrors/bl/blender_mmd_tools 你是否曾经…...

Ganache Provider事件系统:如何监控和调试智能合约执行

Ganache Provider事件系统&#xff1a;如何监控和调试智能合约执行 【免费下载链接】ganache :warning: The Truffle Suite is being sunset. For information on ongoing support, migration options and FAQs, visit the Consensys blog. Thank you for all the support over…...

PP-DocLayoutV3入门指南:5类典型失败图诊断(反光/模糊/歪斜/低对比)及应对策略

PP-DocLayoutV3入门指南&#xff1a;5类典型失败图诊断&#xff08;反光/模糊/歪斜/低对比&#xff09;及应对策略 1. 引言&#xff1a;当文档布局分析遇到“坏”图片 想象一下&#xff0c;你拿到一份重要的纸质合同&#xff0c;需要快速提取里面的关键信息。你掏出手机拍了张…...

我从怀疑交智商税到真香,2026这款会议纪要自动生成软件真后悔没早用

上周开完3小时季度复盘会&#xff0c;散会leader丢一句“下班前把纪要整理好发我”&#xff0c;我对着录音逐句听了两个小时&#xff0c;错漏还一堆&#xff1b;上次跟客户谈合作&#xff0c;整理录音时把客户要求的交付时间写错&#xff0c;差点误事&#xff1b;做用户访谈录了…...

STC8H8K32U按键控制OLED显示

手动按键按下,OLED显示对应键值 气缸前进后退电机正反转本文实现了一个基于STC8H单片机的按键检测与OLED显示系统。系统通过8个独立按键输入信号&#xff0c;采用消抖算法检测有效按键&#xff0c;并在OLED屏幕上实时显示对应按键编号。程序包含OLED初始化、I2C通信协议实现、按…...

Nanobot与Kubernetes集成:云原生部署方案

Nanobot与Kubernetes集成&#xff1a;云原生部署方案 1. 引言 在云原生时代&#xff0c;如何高效部署和管理AI应用成为开发者面临的重要挑战。Nanobot作为一个超轻量级的AI助手框架&#xff0c;以其仅4000行代码的精简设计和强大功能吸引了广泛关注。但当我们需要在生产环境中…...

PyTorch 2.8镜像快速验证:RTX 4090D执行torch.cuda.is_available()全流程

PyTorch 2.8镜像快速验证&#xff1a;RTX 4090D执行torch.cuda.is_available()全流程 1. 镜像环境概述 PyTorch 2.8深度学习镜像为RTX 4090D显卡深度优化&#xff0c;提供开箱即用的高性能计算环境。这个镜像专为24GB显存显卡设计&#xff0c;预装了完整的CUDA 12.4工具链和必…...

OpenClaw新手避坑指南:Qwen3.5-9B对接常见问题解决方案

OpenClaw新手避坑指南&#xff1a;Qwen3.5-9B对接常见问题解决方案 1. 为什么需要这份指南 上周我在本地部署OpenClaw对接Qwen3.5-9B模型时&#xff0c;连续踩了五个坑。从安装报错到模型连接超时&#xff0c;每个问题都消耗了我至少两小时的排查时间。这种经历让我意识到&am…...

天龙八部GM工具终极指南:5步掌握高效游戏管理技巧

天龙八部GM工具终极指南&#xff1a;5步掌握高效游戏管理技巧 【免费下载链接】TlbbGmTool 某网络游戏的单机版本GM工具 项目地址: https://gitcode.com/gh_mirrors/tl/TlbbGmTool TlbbGmTool是一款专为《天龙八部》单机版本设计的专业游戏管理工具&#xff0c;为游戏管…...