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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/683600.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

极压抗磨剂属于润滑油添加剂 我国生产企业众多

极压抗磨剂属于润滑油添加剂 我国生产企业众多 常见润滑油添加剂包括极压抗磨剂、防腐防锈剂、抗氧剂、泡沫抑制剂、清净剂、分散剂等。极压抗磨剂指能够增强润滑油抗磨和极压性能的润滑油添加剂,具有耐腐蚀、粘附力强、耐热等优势,在航空航天、汽车制造…

王道408数据结构CH2_线性表

概述 2 线性表 2.1 基本操作 2.2 顺序表示 线性表的元素从1开始,数组元素下标从0开始 2.2.1 结构体定义 #define Maxsize 50typedef struct{ElemType data[Maxsize];int length; }SqList;#define Initsize 100typedef struct{ElemType *data;int Maxsize ,length;…

DVWA-CSRF

CSRF Low 观察后端代码,只要password_new等于password_conf就可以修改密码。由于这两个参数是通过GET传递的,所以直接构造payload。 http://192.168.20.156/DVWA/vulnerabilities/csrf/?password_newpass&password_confpass&ChangeChange# 这…

PDF批量加水印 与 去除水印实践

本文主要目标是尝试去除水印,但是为了准备测试数据,我们需要先准备好有水印的pdf测试文件。 注意:本文的去水印只针对文字悬浮图片悬浮两种特殊情况,即使是这两种情况也不代表一定都可以去除水印。 文章目录 批量添加透明图片水印…

[行业原型] 汽车供应链多地分销一站式云端解决方案

互联网改变了企业经营模式、竞争环境,同时还在改变企业的交易方式,影响着企业间的协作。 全球化电子商务环境下,传统的供应链管理模式不能适应新环境下供应链管理要求,新的供应链管理模式—eSCM。 eSCM是将分销管理、客户资源管理…

网络工程从头做-1

网络工程从头做-1 自下而上,从接入交换机开始网络的配置和规划 实验拓扑: 实验步骤: 1.完成基本配置 1.1 PC端IP地址信息配置略 1.2 接入层交换机S1配置 [Huawei]sys S1 [S1]undo in [S1]vlan b 10 20 [S1]int e0/0/1 [S1-Ethernet0/0/1]p l…

免费,C++蓝桥杯等级考试真题--第7级(含答案解析和代码)

C蓝桥杯等级考试真题--第7级 答案:D 解析:步骤如下: 首先,--a 操作会使 a 的值减1,因此 a 变为 3。判断 a > b 即 3 > 3,此时表达式为假,因为 --a 后 a 并不大于 b。因此,程…

Java——包装类、泛型简介

一、包装类 在Java中,由于基本类型不是继承自Object,为了在泛型代码中可以支持基本类型,Java给每个基本类型都对应了一个包装类型 1.1 基本数据类型和对应的包装类 基本数据类型包装类byteByteshortShortintIntegerlongLongfloatFloatdoub…

[图解]企业应用架构模式2024新译本讲解09-领域模型2

1 00:00:01,750 --> 00:00:03,030 代码还是一样的 2 00:00:03,040 --> 00:00:12,640 我们还是从前面人家做的复刻案例来看 3 00:00:14,170 --> 00:00:15,200 这个是它的类图 4 00:00:15,640 --> 00:00:20,650 我们同样用UModel逆转,这个太小了&#…

博物馆文物库房管理软件

博物馆作为文化遗产的守护者和传承者,承载着人类智慧与文明的结晶。在博物馆的背后,一个庞大而严密的管理系统支撑着文物的保护与展示。而其中,文物库房管理软件的使用,无疑是一项重要的管理工具。 文物库房管理软件的功能具有多样…

EDA数据跨网交换解决方案,一文了解

EDA数据通常与电子设计自动化相关,这是一种利用计算机辅助设计(CAD)软件来完成超大规模集成电路(VLSI)芯片的功能设计、综合、验证、物理设计等流程的技术。以下是一些会涉及到EDA数据的行业: 集成电路设计…

Hadoop3:MapReduce源码解读之Mapper阶段的FileInputFormat的切片原理(2)

Job那块的断点代码截图省略,直接进入切片逻辑 参考:Hadoop3:MapReduce源码解读之Mapper阶段的Job任务提交流程(1) 4、FileInputFormat切片源码解析 切片入口 获取切片 获取切片最大的Size和切片最小的Size 判断文…

戴尔R720服务器(3)组RAID

今天收到7块硬盘,现在共有8块硬盘了,找了个视频学习了怎么使用阵列卡组RAID并记录。 ​​ ‍ 视频参考:【戴尔服务器添加RAID5热备盘hotspare】 ‍ 阵列卡组RAID5 开始 连接iDRAC控制台服务器开机按F2进入BIOS选择Device Settings​ ​​…

数据结构之归并排序算法【图文详解】

P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。 博主主页:LiUEEEEE                        …

【JS】详解reduce()方法及其奇技淫巧、性能

历史小剧场 或许到人生的最后一刻,他都不知道自己为什么会死,他永远也不会知道,在这个世界上,有着许多或明或暗的规则,必须适应,必须放弃原则,背离良知,与光同尘,否则你有…

make_ext4fs:not found

报错信息: 解决: sudo apt-get install android-tools-fsutils sudo apt-get install android-sdk-libsparse-utils sudo apt-get install android-sdk-ext4-utils

代码随想录训练营Day29

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、递增子序列二、全排列三、全排列2 前言 今天是跟着代码随想录刷题的第29天,今天主要学了以下几个内容:491.递增子序列、46.全排列、…

python中实现队列功能

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 python中实现队列功能 选择题 以下代码最后一次输出的结果是? from collections import deque queue deque() queue.append(1) queue.append(2) queue.append(3) print(【显示】…

惊呆了!六西格玛培训竟然这么强大!——张驰咨询

六西格玛,这个在业界久负盛名的管理理念,它的魅力太强大了。曾听闻它能帮助企业和个人提升竞争力,但当真正走进这个培训体系时,会发现它的影响力远超你的想象。 在六西格玛的指导下,企业实现了显著的转变。之前那些看…

微软云计算[1]之云计算平台、云操作系统Windows Azure

微软云计算平台 微软云计算平台微软的云计算技术Windows Azure组成 微软云操作系统Windows AzureWindows Azure概述Windows Azure计算服务Windows Azure存储服务全局命名空间体系架构存储域的层次结构双复制引擎文件流层分区层 Windows Azure ConnectWindows Azure CDNFabric控…