019 单例模式的5种写法
时间:2022-05-04
本文章向大家介绍019 单例模式的5种写法,主要内容包括1、懒汉、2、饿汉、3、双重校验锁、4、枚举、5、静态内部类、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
单例模式的定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点!
1、懒汉
public class Singleton {
private static Singleton instance;
private Singleton (){}
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
2、饿汉
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton (){}
public static Singleton getInstance() {
return instance;
}
}
3、双重校验锁
public class Singleton {
private volatile static Singleton singleton;
private Singleton (){}
public static Singleton getSingleton() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}
4、枚举
public enum Singleton {
INSTANCE;
public void whateverMethod() {
}
}
5、静态内部类
public class Singleton {
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
private Singleton (){}
public static final Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
- 加密货币常见加密算法
- 如何给Kerberos环境下的CDH集群添加Gateway节点
- Spring Security OAuth RCE (CVE-2016-4977) 漏洞分析
- 高通量测序如何寻找T-DNA插入的位置
- 如何使用java命令从非集群节点向CDH集群提交MapReduce作业
- 【深度学习入门系列】TensorFlow训练线性回归
- 从老漏洞到新漏洞---iMessage 0day(CVE-2016-1843) 挖掘实录
- Wordpress <= 4.6.1 使用语言文件任意代码执行 漏洞分析
- 如何使用hadoop命令向CDH集群提交MapReduce作业
- Wordpress <= 4.6.1 使用主题文件触发存储型XSS 漏洞分析
- 如何跨平台在本地开发环境提交MapReduce作业到CDH集群
- 区块链行业的机会
- KEGG数据库的rest API(附带R语言小技巧)
- 如何使用Java代码访问HDFS.docx
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法