单例模式

本文探讨了单例模式的概念,即确保一个类只有一个实例,并提供全局访问点。介绍了单例模式的一种实现方式——饿汉模式,通过代码示例展示了其在多线程环境下的工作原理,强调在并发情况下如何防止多次实例化。

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

单例模式

一个类只能实例化一次

  public class Text016 {
    	//提供一个开放口 要外面的
    	//因为是static 所以只可以实例一次,之后的都会去常量池中拿,所以独一份
    	public static Text016 text16 =  new Text016();
    	//私有化自己的构造函数   其他人没有办法new出来一个实例
    	private Text016() {}
    	private String name;
    	private String age;
    }
 }

public class Text015 {
	public static void main(String[] args) {
			Text016 text161 = Text016.text16;
			Text016 text162 = Text016.text16;
			Text016 text163 = Text016.text16;
			System.out.println(text161);
			System.out.println(text162);
			System.out.println(text163);
	}
}

在这里插入图片描述

两个类 在这里插入图片描述

单例升级版本一:饿汉模式

class Text016

	private Text016() {}
	private static Text016 text016 = new Text016();
	private String name;
	private String age;
	public static Text016 geText016() {
		return text016;
	}

class Text015

	Text016 text161 = Text016.geText016();
	Text016 text162 = Text016.geText016();
	Text016 text163 = Text016.geText016();
	System.out.println(text161);
	System.out.println(text162);
	System.out.println(text163);

在这里插入图片描述
第二种

private Text016() {}
private static Text016 text016;
private String name;
private String age;
public static Text016 geText016() {
	if(text016 == null) {
		//在多线程条件下  下面的new还没有实例完。第二个线程就进行了if  会导致实例两次
		//当并发够多时完全可以实例化好几个
		text016 =new Text016();
	}
	return text016;
	
}

在多线程条件下 下面的new还没有实例完。第二个线程就进行了if 会导致实例两次
当并发够多时完全可以实例化好几个

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值