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集合类中元素有序࿰…...
实战 | 基于卷积神经网络的蘑菇识别微信小程序
一个不知名大学生,江湖人称菜狗 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允许开发人员连接到数据库,执行各种操作(如插入、更新、删除和查询数据)…...
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 年成立了一个称为绿色计划(Green Project)的项目,由 James Gosling(高斯林)博士领导,绿色计划的目的是开发一种能够在各种消费性电子产品&…...
【入门Flink】- 10基于时间的双流联合(join)
统计固定时间内两条流数据的匹配情况,需要自定义来实现——可以用窗口(window)来表示。为了更方便地实现基于时间的合流操作,Flink 的 DataStrema API 提供了内置的 join 算子。 窗口联结(Window Join) 一…...
【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类
🎊专栏【JavaSE】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 🎄欢迎并且感谢大家指出小吉的问题🥰 文章目录 🍔System类⭐exit()⭐currentTimeMillis()🎄用…...
零基础玩转AI春联生成:手把手教你Windows WSL2部署达摩院春联模型
零基础玩转AI春联生成:手把手教你Windows WSL2部署达摩院春联模型 春节将至,家家户户都开始准备贴春联。但每年想一副既传统又有新意的对联可不容易——要么是市场上买的千篇一律,要么自己绞尽脑汁也想不出好句子。今天,我将带你…...
Blender MMD Tools插件完全指南:从入门到精通
Blender MMD Tools插件完全指南:从入门到精通 【免费下载链接】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事件系统:如何监控和调试智能合约执行 【免费下载链接】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入门指南:5类典型失败图诊断(反光/模糊/歪斜/低对比)及应对策略 1. 引言:当文档布局分析遇到“坏”图片 想象一下,你拿到一份重要的纸质合同,需要快速提取里面的关键信息。你掏出手机拍了张…...
我从怀疑交智商税到真香,2026这款会议纪要自动生成软件真后悔没早用
上周开完3小时季度复盘会,散会leader丢一句“下班前把纪要整理好发我”,我对着录音逐句听了两个小时,错漏还一堆;上次跟客户谈合作,整理录音时把客户要求的交付时间写错,差点误事;做用户访谈录了…...
STC8H8K32U按键控制OLED显示
手动按键按下,OLED显示对应键值 气缸前进后退电机正反转本文实现了一个基于STC8H单片机的按键检测与OLED显示系统。系统通过8个独立按键输入信号,采用消抖算法检测有效按键,并在OLED屏幕上实时显示对应按键编号。程序包含OLED初始化、I2C通信协议实现、按…...
Nanobot与Kubernetes集成:云原生部署方案
Nanobot与Kubernetes集成:云原生部署方案 1. 引言 在云原生时代,如何高效部署和管理AI应用成为开发者面临的重要挑战。Nanobot作为一个超轻量级的AI助手框架,以其仅4000行代码的精简设计和强大功能吸引了广泛关注。但当我们需要在生产环境中…...
PyTorch 2.8镜像快速验证:RTX 4090D执行torch.cuda.is_available()全流程
PyTorch 2.8镜像快速验证:RTX 4090D执行torch.cuda.is_available()全流程 1. 镜像环境概述 PyTorch 2.8深度学习镜像为RTX 4090D显卡深度优化,提供开箱即用的高性能计算环境。这个镜像专为24GB显存显卡设计,预装了完整的CUDA 12.4工具链和必…...
OpenClaw新手避坑指南:Qwen3.5-9B对接常见问题解决方案
OpenClaw新手避坑指南:Qwen3.5-9B对接常见问题解决方案 1. 为什么需要这份指南 上周我在本地部署OpenClaw对接Qwen3.5-9B模型时,连续踩了五个坑。从安装报错到模型连接超时,每个问题都消耗了我至少两小时的排查时间。这种经历让我意识到&am…...
天龙八部GM工具终极指南:5步掌握高效游戏管理技巧
天龙八部GM工具终极指南:5步掌握高效游戏管理技巧 【免费下载链接】TlbbGmTool 某网络游戏的单机版本GM工具 项目地址: https://gitcode.com/gh_mirrors/tl/TlbbGmTool TlbbGmTool是一款专为《天龙八部》单机版本设计的专业游戏管理工具,为游戏管…...
