单例模式(饿汉式-懒汉式)

news/2024/9/22 18:43:58/

我给面试官讲解了单例模式后,他对我竖起了大拇指!icon-default.png?t=O83Ahttps://blog.csdn.net/weixin_41949328/article/details/107296517?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522FAEE9ABD-432D-416C-98C6-9DD939138DEB%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=FAEE9ABD-432D-416C-98C6-9DD939138DEB&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-107296517-null-null.142^v100^pc_search_result_base4&utm_term=%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F&spm=1018.2226.3001.4187

1.单例模式

1.单:一个
2.例:实例,对象
3.目的:为了让一个类只产生一个对象供外界使用

1.1.饿汉式:

java">public class Singleton {/*** 为了不让外界随意new对象* 我们需要将构造私有*/private Singleton(){}/*由于是饿汉式,迫不及待的让这个对象new出来,所以我们new对象的时候,将其变成静态的而且,单例模式,自己new出来的对象,不能让外界随意直接调用,所以将对象private*/private static Singleton singleton = new Singleton();  //   在本类中定义一个方法,将内部的对象给外界public static Singleton getSingleton(){return singleton;}
}

1.2.懒汉式:

java">public class Singleton1 {/*** 为了不让外界随意new对象* 我们需要将构造私有*/private Singleton1() {}/*由于是懒汉式,不着急new对象,啥时候想用,啥时候new而且,单例模式,自己的对象,不能让外界随意直接调用,所以将对象private*/private static Singleton1 singleton = null;/*在本类中定义一个方法,将内部的对象给外界*/public static Singleton1 getSingleton() {/*外层判断,是决定要不要抢锁*/if (singleton==null){synchronized (Singleton1.class){/*内层判断,是决定要不要new对象*/if (singleton == null) {singleton = new Singleton1();}}}return singleton;}
}


http://www.ppmy.cn/news/1528961.html

相关文章

使用源代码编译R包的过程

R包的安装方式可以归纳为 源代码安装 和 二进制文件安装 两类: 源代码安装 是指从包的源代码进行编译安装。包括:① 通过CRAN安装源代码版本的包(如果没有二进制版本,或者指定了安装源代码)。② 从GitHub、Bioconducto…

Spark-ShuffleWriter-UnsafeShuffleWriter-钨丝内存分配

一、上下文 《Spark-ShuffleWriter-UnsafeShuffleWriter》中提到在进行Page内存分配时,调用了一行代码 MemoryBlock page memoryManager.tungstenMemoryAllocator().allocate(acquired); 这里就会走MemoryManager的钨丝内存分配,下面我们来详细看下 …

龙蜥8.9系统hadoop3.3.6上spark3.5.2安装(伪分布)

继续接着上篇的环境安装。 1、去清华的镜像源下载相关文件 https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-3.5.2/ 2、解压缩 tar zxvf spark-3.5.2-bin-hadoop3.tgz3、移动到适当位置 mv spark-3.5.2-bin-hadoop3 /app/spark-34、下载scala https://www.scala-la…

golang学习笔记2-语法要求,注释与代码风格

注:本人已有C,C,Python基础,只写本人认为的重点。 一、语法要求 1.每个go文件必须有package声明且只能有一个 2.定义过的变量(全局变量除外)或使用import导入的包在之后必须使用 3.和C/C一样,一个项目只能有…

【django】局域网访问django启动的项目

目录 一、现象 二、django的settings.py配置 三、启动django项目 四、获取本机IP 五、局域网机器访问 前言:本机使用pycharm启动的项目,局域网其他机器访问 一、现象 django开发了接口,想给其他同志访问接口测试,无法通过I…

引入第三方字体图标icon

引入第三方字体图标icon 1.登录阿里巴巴icon库 2.点开ui提供的字体图标并下载 3.解压download 将font_4008950_i6fkbudh8ld文件放置项目中例如:放在assets文件夹下 4.然后再main.js中引入 import ‘/assets/font_4008950_i6fkbudh8ld/iconfont.css’; 5.项目中应…

三种springboot启动时加载方式

三种springboot启动时加载方式一个注解,两个接口,常用于数据预热:PostConstructimplements CommandLineRunnerimplements ApplicationRunnerSlf4j EnableAsync SpringBootApplication public class ApiApplication extends SpringBootServlet…

【Matlab 肌电信号分析】

一、数据预处理 1.1 数据读取 使用matlab从rhd文件中读取原始数据,共64个通道。 1.2 数据滤波 使用 60Hz的Notch filter 和150Hz的高通Butterworth滤波器进行降噪 二、波峰提取 > 每个通道分别根据相应的规则提取出波峰、波谷附近的波形。 三、信号聚类 3.1 降…