单例模式5种实现方式

本文介绍了单例模式的概念及其五种实现方式:懒汉模式、饿汉模式、枚举模式、静态内部类模式和双重检查模型,并对比了它们的执行效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个类始终保证只有一个对象,这种模式称为单例模式。
优点:不需要反复创建与回收对象,节约内存空间,调用执行效率高
缺点:并发操作会造成线程不安全

懒汉模式:

public class SingleOne {
private static SingleOne single;
private SingleOne() {}
public static synchronized SingleOne getInstance() {
if(single == null) {
single = new SingleOne();
}
return single;
}
}

饿汉模式:

public class SingleTwo {
private static SingleTwo single = new SingleTwo();
private SingleTwo() {}
public static SingleTwo getInstance() {
return single;
}
}

枚举模式:

public enum Single {
INSTANCE;
}

静态内部类模式:

public class Singleton {
private Singleton() {}
private static class SingletonInstance {
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return SingletonInstance.INSTANCE;
}
}

双重检查模型:

public class Singleton {
private static volatile Singleton singleton;
private Singleton() {}
public static Singleton getInstance() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}

效率由高到低排列:静态内部类式 > 饿汉式 > 枚举式 > 双重检测锁式 > 懒汉式

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值