多线程专题 - 单例模式和多线程

本文详细介绍了六种不同的单例模式实现方法,包括立即加载、延迟加载、使用静态内置类、序列化与反序列化、使用static代码块以及使用enum枚举实现的单例模式,并对比了它们的特点。

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

  1. 立即加载
  2. 延迟加载
  3. 使用静态内置类实现单例模式
  4. 序列化和反序列化的单例模式实现
  5. 使用static代码块实现单例模式
  6. 完善使用enum美剧实现单例模式

 

1.立即加载的单例模式

public class Singleton {

private static Singleton instance=new Singleton();

private Singleton() {

}

public static Singleton getInstance() {

return instance;

}



}

2.延迟加载的单例模式

public class Singleton {

private static Singleton instance;

private Singleton() {

}

public static Singleton getInstance() {

if(null!=instance) {

}else {

synchronized(Singleton.class) {

if(null==instance) {

instance=new Singleton();

}

}

}

return instance;

}



}

3.使用静态内置类实现单例模式,对序列化对象无能为力

public class Singleton {

private Singleton() {

}

private static class SingletonHandle{

private static Singleton Instance=new Singleton();

}

public static Singleton getInstance() {

return SingletonHandle.Instance;

}



}

4.序列化和反序列化的单例模式实现

import java.io.ObjectStreamException;

import java.io.Serializable;



public class Singleton implements Serializable{

private static final long serialVersionUID = 282571242107328345L;



private Singleton() {

}

private static class SingletonHandle{

private static Singleton Instance=new Singleton();

}

public static Singleton getInstance() {

return SingletonHandle.Instance;

}

protected Object readResolve() throws ObjectStreamException{

return SingletonHandle.Instance;

}



}

5.使用static代码块实现单例模式

public class Singleton{

private static Singleton instance;



private Singleton() {

}

static {

instance=new Singleton();

}

public static Singleton getInstance() {

return instance;

}



}

6.完善使用enum枚举实现单例模式

public class Singleton{

public enum SingletonEnum{

singletonEnum;

private Singleton instance;

private SingletonEnum() {

instance=new Singleton();

}

public Singleton getInstance() {

return instance;

}

}

public static Singleton getInstance() {

return SingletonEnum.singletonEnum.getInstance();

}



}

这几种单例模式中,前三种比较多见。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值