Java之单例设计模式示例详解
单例设计模式
保证一个类在内存中只能有一个对象。
思路:
1)如果其他程序能够随意用 new 创建该类对象,那么就无法控制个数。因此,不让其他程序用 new 创建该类的对象。
2)既然不让其他程序 new 该类对象,那么该类在自己内部就要创建一个对象,否则该类就永远无法创建对象了。
3)该类将创建的对象对外(整个系统)提供,让其他程序获取并使用。
饿汉式:
一上来我就把对象给你 new 好了,你来了直接就可以拿去“吃”了
懒汉式
(要是有人问单例的延迟加载方式指的就是这种方式)
一开始我就不给你 new 对象,你来找我,我在给你创建一个对象
懒汉式有一个缺点,就是在多线程中使用的时候,可能会创建多个实例对象,比如,线程1来调用 getInstance() 方法,判断了 s==null,然后线程1由于未知的原因阻塞了,线程2再来调用getInstance() 方法,判断 s==null ,线程2就创建了一个对象,这时候线程1又运行了,那么线程1就会创建一个对象~这样就会造成多个对象~
懒汉式的线程优化——加一个锁
饿汉式和懒汉式的区别:
1)饿汉式是空间换时间,懒汉式是空间换时间。
2)在多线程访问的时候,懒汉式可能会创建多个对象,而饿汉式不会。
到此这篇关于Java之单例设计模式示例详解的文章就介绍到这了,更多相关Java 单例设计模式 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java设计模式之观察者模式(Observer Pattern)详解
观察者模式(Observer Pattern)是一种行为型设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都能够自动地得到通知并进行更新,本文将详细的给大家介绍一下Java观察者模式,需要的朋友可以参考下2023-07-07SpringBoot报错Invalid bound statement (not found)问题排查和解决方案
这篇文章主要介绍了SpringBoot报错Invalid bound statement (not found)问题排查和解决方案,文中通过图文结合的方式讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下2024-03-03MyBatisPlus中@TableField注解的基本使用
这篇文章主要介绍了MyBatisPlus中@TableField注解的基本使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-07-07Spring boot集成swagger2生成接口文档的全过程
这篇文章主要给大家介绍了关于Spring boot集成swagger2生成接口文档的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧2019-09-09
最新评论