单例模式概述及代码演示

Java单例模式

话不多说,show my codes

饿汉式:
对于饿汉式而言,是典型的空间换时间的一种编码形式,在类进行加载的时候,静态实例对象就完成了初始化操作。也就是说不管你用还是不用,先建出来放着,要用的时候就直接拿。相对来说在操作使用的时候,速度比较快的。但是由于在类加载的时候这个对象就产生出来了,所以它的存在周期也是比较长的。正所谓空间换时间的操作形式。

package com.etime.work001;

public class SingletonOne {
    //创建一个私有构造函数
	private SingletonOne() {
	    System.out.println("这是一个私有构造函数");
	}
    //创建私有静态方法并实例化对象
	private static SingletonOne instance = new SingletonOne();
    //创建公有方法返回私有实例对象
	public static SingletonOne getInstance() {
		return instance;
	}
}

懒汉式:
对于饿汉式而言,是典型的时间换空间的一种编码形式,在进行类加载的时候,类内实例对象创建时并不直接初始化,直到第一次调用get方法时,才完成初始化。所以在类加载时并不会真正的去开辟该对象的空间,只有在用的时候,才会去通过检测去判断对象是否实例化,期间就会耗费时间,如果一直不用,空间就不会造成损耗。

package com.etime.work002;

public class SingletonTwo {
    //创建一个私有构造函数
	private SingletonTwo() {
	    System.out.println("这是一个私有构造函数");
	}
    //创建私有静态实例对象
	private static SingletonTwo instance = null;
    //创建公有静态方法并提供实例对象
	public static synchronized SingletonTwo getInstance() {
		if (instance == null) {
			instance = new SingletonTwo();
        }
		return instance;
	}
}

另外,简单了解一下,在实际项目开发中还存在多线程的场景,也就是说在某一时刻干多件事情。
1.相比较而言,饿汉式在类加载的时候,就已经进行了对象实例化创建,即便是多线程并发操作,访问的实例对象也是唯一的,所以饿汉式线程安全。
2.而懒汉式是在第一次要使用的时候才去进行初始化操作,当多个线程并发操作的时候,由于时间片的切换,可能导致一定的线程风险。

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发呆小菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值