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

0605-JavaSE-单例模式-饿懒汉模式

​​​​​​​

不能放在方法里面(因为每个线程调用都会在方法里面实例化一个locker对象,但不属于同一个对象),然后要用static修饰成静态变量才会起到效果

//单例设计模式
//饿汉模式:在加载类的时候就已经开始创建
//static成员初始化在类加载的时候
//jvm一旦启动就加载
//每个类的类对象在Jvm中只有一份
class Singleton{private static Singleton instance =new Singleton();private Singleton(){//防止创建多个实例//private,default,public,关键字的访问权限、}public static Singleton getInstance() {return instance;}
}
//懒汉模式:在使用的时候再去创建,而不是像懒汉模式一样在类加载(即程序启动)的时候扎堆创建(会使程序启动时间拖慢)。具有分时性,使用户几乎感受不到影响
//懒汉模式的缺点:?
class SingleLazy{private static volatile SingleLazy instance=null;private static Object locker =new Object();//private SingleLazy(){}//静态方法的特性?public static SingleLazy getInstance() {// Object locker =new Object();//不能放在方法里面(因为每个线程调用都会在方法里面实例化一个locker对象,但不属于同一个对象),// 然后要用static修饰成静态变量才会起到效果if(instance==null){synchronized (locker){if(instance==null){instance=new SingleLazy();}}}return instance;}
}
//new SingleLazy 可看做为赋值操作-->
//1.向内存申请一片空间 2.初始化对象 3.将地址赋给对象--2,3操作可能会被编译器优化成3,2
//然后由于第一个if,其他线程被调度在第一个if条件判断后,会导致直接返回一个未被初始化的对象
//static静态方法类属性如何被开始加载
//注意懒汉模式在多线程的情况下会出现线程安全问题,可能会出现覆盖问题
//为了解决上述问题:1.加锁打包成原子操作
//2.由于上锁会使效率降低,所以可以在外面加if条件判断
//3.为了解决潜在的内存可见性问题和指令重排序问题可在变量上加上一个关键字volatile(表示该变量是可变的,编译器便不会对该变量进行优化操作)
public class Demo2 {public static void main(String[] args) {Singleton instance=Singleton.getInstance();// Singleton singleton=new Singleton();无法创建SingleLazy singleLazy=SingleLazy.getInstance();}
}

相关文章:

0605-JavaSE-单例模式-饿懒汉模式

​​​​​​​ 不能放在方法里面(因为每个线程调用都会在方法里面实例化一个locker对象,但不属于同一个对象),然后要用static修饰成静态变量才会起到效果 //单例设计模式 //饿汉模式:在加载类的时候就已经开始创建 /…...

TCP和UDP区别

TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)都是Internet协议套件中的传输层协议,但它们在工作方式、特性和适用场景上有显著区别&#xff…...

[Shell编程学习路线]——编制第一个shell脚本入门篇

🏡作者主页:点击! 🛠️Shell编程专栏:点击! ⏰️创作时间:2024年6月12日10点23分 🀄️文章质量:93分 目录 ——前言—— 💥常用的几种shell Bash Sh …...

python数据处理分析库(一)

目录 一、NumPy 二、Pandas 三、Matplotlib and Seaborn 一、NumPy 场景:处理大规模数组和矩阵运算,可以用于科学计算、数据预处理简单示例: import numpy as npdata np.array([1, 2, 3, 4, 5]) mean np.mean(data) std_dev np.std(da…...

使用Transformer进行抄袭检测

动机 在许多行业中,尤其是在学术界,抄袭是一个重大问题。随着互联网和开放信息的兴起,这种现象甚至变得更加严重,任何人都可以通过点击访问特定主题的任何信息。 基于这一观察,研究人员一直在尝试使用不同的文本分析…...

基于深度学习的电池健康状态预测(Python)

电池的故障预测和健康管理PHM是为了保障设备或系统的稳定运行,提供参考的电池健康管理信息,从而提醒决策者及时更换电源设备。不难发现,PHM的核心问题就是确定电池的健康状态,并预测电池剩余使用寿命。但是锂电池的退化过程影响因…...

【吊打面试官系列-Mysql面试题】MySQL 如何优化 DISTINCT?

大家好,我是锋哥。今天分享关于 【MySQL 如何优化 DISTINCT?】面试题,希望对大家有帮助; MySQL 如何优化 DISTINCT? DISTINCT 在所有列上转换为 GROUP BY,并与 ORDER BY 子句结合使用。 SELECT DISTINCT t…...

企业IT运维管理体系-总体规划

企业IT运维管理体系-总体规划 企业IT运维管理体系的总体规划通过科学的调研、分析、设计和建设,提升管理成熟度、增强服务能力、实现技术创新和优化资源配置。重点在于建立组织保障体系、制定运维制度、构建运维平台和完善度量指标。通过明确运维治理模式和外包管理…...

RabbitMQ-Stream(高级详解)

文章目录 什么是流何时使用 RabbitMQ Stream?在 RabbitMQ 中使用流的其他方式基本使用Offset参数chunk Stream 插件服务端消息偏移量追踪示例 示例应用程序RabbitMQ 流 Java API概述环境创建具有所有默认值的环境使用 URI 创建环境创建具有多个 URI 的环境 启用 TLS…...

Web前端图片并排显示的艺术与技巧

Web前端图片并排显示的艺术与技巧 在Web前端开发中,图片并排显示是一种常见的布局需求。然而,实现这一目标并非易事,需要掌握一定的技巧和艺术。本文将从四个方面、五个方面、六个方面和七个方面深入探讨Web前端图片并排显示的奥秘。 四个方…...

豆瓣电影信息爬虫【2024年6月】教程

豆瓣电影信息爬虫【2024年6月】教程,赋完整代码 在本教程中,我们将使用以下技术栈来构建一个爬虫,用于爬取豆瓣电影列表页面的信息: 完整代码放到最后 ; 完整代码放到最后 ; 完整代码放到最后 ;…...

Flutter- AutomaticKeepAliveClientMixin 实现Widget保持活跃状态

前言 在 Flutter 中,AutomaticKeepAliveClientMixin 是一个 mixin,用于给 State 类添加能力,使得当它的内容滚动出屏幕时仍能保持其状态,这对于 TabBarView 或者滚动列表中使用 PageView 时非常有用,因为这些情况下你…...

《计算机组成原理》期末复习题节选

第三章–存储系统 3.1 存储器性能指标 核心公式: 存储容量存储字数*字长 ,存储字数表示存储器的地址空间的大小,字长表示一次存取操作的数据量.数据传输率数据宽度/存储周期 1、设机器字长为32位,一个容量为16MB的存储器&…...

NSSCTF中的popchains、level-up、 What is Web、 Interesting_http、 BabyUpload

目录 [NISACTF 2022]popchains [NISACTF 2022]level-up [HNCTF 2022 Week1]What is Web [HNCTF 2022 Week1]Interesting_http [GXYCTF 2019]BabyUpload 今日总结&#xff1a; [NISACTF 2022]popchains 审计可以构造pop链的代码 <php class Road_is_Long{public $…...

量产维护 | 芯片失效问题解决方案:从根源找到答案

芯片失效分析是指对电子设备中的故障芯片进行检测、诊断和修复的过程。芯片作为电子设备的核心部件,其性能和可靠性直接影响整个设备的性能和稳定性。 随着半导体技术的迅速发展,芯片在各个领域广泛应用,如通信、计算机、汽车电子和航空航天等。 因此,对芯片故障原因进行…...

Linux忘记密码的解决方法

1、进入GRUB页面&#xff0c;选择对应的内核按下‘e’键&#xff1b; 2、进入内核修改信息界面&#xff0c;找到Linux这一行&#xff0c;在这一行的末尾加上 init/bin/sh 按下ctrlx进入单用户模式 3、进入单用户后&#xff0c;重新挂载根目录&#xff0c;使其可写&#xff1…...

数据结构(DS)学习笔记(二):数据类型与抽象数据类型

参考教材&#xff1a;数据结构C语言版&#xff08;严蔚敏&#xff0c;杨伟民编著&#xff09; 工具&#xff1a;XMind、幕布、公式编译器 正在备考&#xff0c;结合自身空闲时间&#xff0c;不定时更新&#xff0c;会在里面加入一些真题帮助理解数据结构 目录 1.1数据…...

【C++进阶】模板与仿函数:C++编程中的泛型与函数式编程思想

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;栈和队列相关知识 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀模板进阶 &#x1f9e9;<&…...

华安保险:核心系统分布式升级,提升保费规模处理能力2-3倍 | OceanBase企业案例

在3月20日的2024 OceanBase数据库城市行的活动中&#xff0c;安保险信息科技部总经理王在平发表了以“保险行业核心业务系统分布式架构实践”为主题的演讲。本文为该演讲的精彩回顾。 早在2019年&#xff0c;华安保险便开始与OceanBase接触&#xff0c;并着手进行数据库的升级…...

佐西卡在美国InfoComm 2024展会上亮相投影镜头系列

6月12日至14日&#xff0c;2024美国视听显示与系统集成展览会将在拉斯维加斯会议中心盛大开幕。这场北美最具影响力的视听技术盛会&#xff0c;将汇集全球顶尖的视听解决方案&#xff0c;展现专业视听电子系统集成、灯光音响等领域的最新技术动态。 在这场科技盛宴中&#xff0…...

如何在Dev-C++中配置TDM-GCC编译器

在Dev-C中配置TDM-GCC编译器的步骤如下&#xff1a; 步骤1&#xff1a;下载TDM-GCC编译器 访问 TDM-GCC官网下载适用于Windows的安装包&#xff08;推荐选择64位版本&#xff1a;tdm-gcc-xxx.exe&#xff09; 步骤2&#xff1a;安装TDM-GCC 运行安装程序&#xff0c;选择默认…...

轻量级索引引擎flyto-indexer:从倒排索引原理到私有数据检索实战

1. 项目概述&#xff1a;一个为数据检索而生的索引引擎最近在折腾一个数据聚合类的项目&#xff0c;需要从海量的、结构不一的文档里快速找到特定信息。试过直接用数据库的模糊查询&#xff0c;也试过一些开源的全文检索引擎&#xff0c;但总觉得差点意思&#xff1a;要么是配置…...

Arm Forge工具链在HPC中的调试与性能优化实践

1. Arm Forge工具链概述高性能计算(HPC)领域的开发者经常面临并行程序调试和性能优化的挑战。Arm Forge作为一套集成化工具平台&#xff0c;包含了三个核心组件&#xff1a;DDT并行调试器、MAP性能分析器和Performance Reports报告生成工具。这套工具链特别适合处理MPI、OpenMP…...

Flexpilot AI:开源可定制的VS Code AI编程助手配置与实战指南

1. 项目概述与核心价值作为一名在开发工具领域摸爬滚打了十多年的老码农&#xff0c;我见证过无数个“下一代编辑器”和“智能助手”的兴衰。当GitHub Copilot横空出世&#xff0c;确实改变了游戏规则&#xff0c;但随之而来的&#xff0c;是开发者们被锁定在单一服务商、高昂的…...

如何高效配置ClickHouse连接器:专业用户的完整指南

如何高效配置ClickHouse连接器&#xff1a;专业用户的完整指南 【免费下载链接】clickhouse-odbc ODBC driver for ClickHouse 项目地址: https://gitcode.com/gh_mirrors/cl/clickhouse-odbc ClickHouse ODBC驱动是连接ClickHouse数据库与各类数据分析工具的关键桥梁&a…...

Laravel Permission终极指南:数据库迁移与性能优化完整教程

Laravel Permission终极指南&#xff1a;数据库迁移与性能优化完整教程 【免费下载链接】laravel-permission Associate users with roles and permissions 项目地址: https://gitcode.com/gh_mirrors/la/laravel-permission 在构建现代Laravel应用时&#xff0c;权限管…...

绕过Cursor AI消费限额前端Bug:浏览器控制台脚本实现API直接管理

1. 项目概述与背景 最近在深度使用Cursor这款AI代码编辑器时&#xff0c;遇到了一个挺让人头疼的问题。Cursor的付费模式是典型的用量计费&#xff0c;也就是所谓的“按需付费”&#xff0c;这对于我们这些高频使用者来说&#xff0c;确实需要设置一个消费上限&#xff0c;以防…...

告别兼容性烦恼:在Vue/React项目中优雅集成sm-crypto国密算法(附IE9+解决方案)

告别兼容性烦恼&#xff1a;在Vue/React项目中优雅集成sm-crypto国密算法&#xff08;附IE9解决方案&#xff09; 国密算法作为国内信息安全领域的重要标准&#xff0c;在前端项目中的集成需求日益增长。然而&#xff0c;现代前端框架与老旧浏览器兼容性问题往往成为开发者的拦…...

Perplexity Nature检索实战手册:9类典型查询失败场景+对应Prompt工程模板(含IEEE/ACS/Nature交叉验证结果)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Perplexity Nature文章检索实战手册导论 Perplexity Nature 是面向科研人员与技术从业者设计的智能学术检索增强工具&#xff0c;它融合了语义理解、引用图谱分析与跨源文献聚合能力&#xff0c;专为高…...

告别SSH命令行:用VSCode的Log Viewer插件实时监控Linux syslog日志(附C程序测试)

告别终端监控&#xff1a;在VSCode中实现Linux系统日志可视化追踪 每次调试服务器应用时&#xff0c;你是否也厌倦了在SSH终端和代码编辑器之间反复切换&#xff1f;那些不断滚动的tail -f输出窗口不仅占用宝贵屏幕空间&#xff0c;还让问题排查变成了一场视觉追踪游戏。对于现…...