java 单例模式学习笔记

为什么单例

很多时候,我们只允许内存中只能存在一个实例,比如在windows中只能存在一个资源管理器窗口,如果弹出多个,就会存在多个窗口显示不一致的状态,假设这些窗口一致,那就是重复对象,就是浪费。所以要确保系统中某个对象只有一个实例相当重要。这里提一下,spring初始化bean默认使用单例。

好处:

  1. 内存中只有一个对象,节省内存空间。
  2. 避免频繁的创建销毁对象,可以提高性能。

创建方式

单例的创建方式有很多,常见的有懒汉模式,饿汉模式,静态内部类。

静态内部类

我见最多的是静态内部类的方式,所以先贴上代码:

public class TestSingleton {
	
	private TestSingleton(){}
	private static class Singleton {
		
		private static TestSingleton instance;
		
		static {
			instance = new TestSingleton();
		}
		public static TestSingleton getInstance() {
			return instance;
		}
	}
	public static TestSingleton getInstance() {
		return Singleton.getInstance();
	}
	
}

静态内部类在调用getInstance()方法时才进行加载,而这种方法又是线程安全的,为什么线程安全?java虚拟机允许,同一个加载器下,一个类型只会初始化一次࿰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值