解决单例模式中懒汉式不支持高并发,饿汉式不支持懒加载问题最简单方法——基于枚举类型的单例实现
一、前言
解决单例模式中懒汉式不支持高并发,饿汉式不支持懒加载问题,确实很多小编也是写过--->
DCL(Double Check Lock双重检锁机制)解决单例模式中懒汉式不支持高并发,饿汉式不支持懒加载问题
静态内部类解决单例模式中懒汉式不支持高并发,饿汉式不支持懒加载问题
大家都可以看一下。
二、代码实现
- 单例模式对象
import java.util.concurrent.atomic.AtomicInteger;
public class Single {private AtomicInteger count = new AtomicInteger(3);
public int getReduce(){
return count.decrementAndGet();
}}
- 枚举类型对象
public enum PhoneEnum {
PHONE_ENUM;
private Single instance;
PhoneEnum() {
instance = new Single();
}
public Single getInstance() {
return instance;
}}
- 测试类
public class BingFa {public static void main(String[] args) {// 创建3个线程,线程里面进行加操作
for (int i = 0;
i < 3;
i++) {
new Thread(() -> {
Single instance = PhoneEnum.PHONE_ENUM.getInstance();
int reduce = instance.getReduce();
System.out.println(Thread.currentThread().getName()+
"线程抢到了手机,剩余手机数量"+"-----"+reduce);
}, String.valueOf(i)).start();
}
}
}
【解决单例模式中懒汉式不支持高并发,饿汉式不支持懒加载问题最简单方法——基于枚举类型的单例实现】- 测试结果
文章图片
三、总结 最简单的实现方式,基于枚举类型的单例实现。这种实现方式通过 Java 枚举类型本身的特性,保证了实例创建的线程安全性和实例的唯一性。比较推荐使用
推荐阅读
- parallels|parallels desktop 解决网络初始化失败问题
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- SpringBoot调用公共模块的自定义注解失效的解决
- 解决SpringBoot引用别的模块无法注入的问题
- Spark|Spark 数据倾斜及其解决方案
- 解决SyntaxError:|解决SyntaxError: invalid syntax
- --木木--|--木木-- 第二课作业#翼丰会(每日一淘6+1实战裂变被动引流# 6+1模式)
- Spectrum|Spectrum 区块偶尔停止同步问题排查与解决笔记
- 一劳永逸地解决词汇量不够的问题