写一下单例模式,考虑线程安全与线程不安全的情况

本文探讨了单例模式在不同线程环境下的实现,包括线程不安全的懒汉模式、线程安全但效率低的实现、双重检查锁定的线程安全模式以及线程安全的饿汉模式。分析了各方法的优缺点,特别是强调了Effective Java作者推荐的线程安全方式,能防止反序列化导致的新对象创建。
摘要由CSDN通过智能技术生成

凡是提到设计模式,面试官很喜欢问最简单的单例模式。


##方法一
单例模式最简单的写法如下

public class SingletonPatternA {
	
	private static SingletonPatternA instance = null;
	
	private SingletonPatternA(){}
	
	public static SingletonPatternA getInstance(){
		if(instance == null)
			instance = new SingletonPatternA();
		
		return instance;
	}
}

这个写法是懒汉单例模式,但也是是属于线程不安全的写法。如果多线程同时来进行getInstance的操作,那么这个时候进入if(instance == null)判断时就需要加入线程同步的方法了。


##方法二
下面写一写存在线程安全的单例模式。

/**
 * 单例模式 - 懒汉、线程安全
 */
public class SingletonPatternB {
	
	private static SingletonPatternB instance;

	private SingletonPatternB() {
	}
	
	// 加入synchronized,把整个方法串行执行 
	public static synchronized SingletonPatternB getInstance(){
		if(instance == null){
			instance = new SingletonPatternB();
		}
		return inst
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值