一、前言
解决单例模式中懒汉式不支持高并发,饿汉式不支持懒加载问题,确实很多小编也是写过---> DCL(Double Check Lock双重检锁机制)解决单例模式中懒汉式不支持高并发,饿汉式不支持懒加载问题
静态内部类解决单例模式中懒汉式不支持高并发,饿汉式不支持懒加载问题 大家都可以看一下。
二、代码实现
- 单例模式对象
代码语言:javascript复制import java.util.concurrent.atomic.AtomicInteger;
public class Single {
private AtomicInteger count = new AtomicInteger(3);
public int getReduce(){
return count.decrementAndGet();
}
}
- 枚举类型对象
代码语言:javascript复制public enum PhoneEnum {
PHONE_ENUM;
private Single instance;
PhoneEnum() {
instance = new Single();
}
public Single getInstance() {
return instance;
}
}
- 测试类
代码语言:javascript复制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 枚举类型本身的特性,保证了实例创建的线程安全性和实例的唯一性。比较推荐使用
Q.E.D.