首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

模式】饿汉,懒汉JAVA如何实现?线程安全吗?

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 Java设计模式 设计模式(Singleton...):即唯一实例,某个类在整个系统中只能有一个实例对象可被获取和使用的代码模式。...对外提供获取该实例的方式: 直接暴露 用静态变量的get方法获取 饿汉饿汉:直接创建对象,不存在线程安全问题。...(在类初始化时直接创建对象,不管你是否需要这个对象都会创建) 实现方式: 直接实例化饿汉(简洁明了) 枚举(最简洁) 静态代码块饿汉(适合复杂实例化) 直接实例化 //Singleton:设计模式...,软件开发中常见的设计模式之一 //设计模式——饿汉1:直接实例化饿汉 /* * 1.构造器私有化 * 2.自行创建,并且用静态变量保存 * 3.向外提供这个实例 * 4.使用final

16150

Java实现模式(懒汉饿汉

三、饿汉 四、懒汉 4.1 单线程下 4.2 多线程下(简单版) 4.3 多线程下(增强版) 总结 ---- 前言 博主个人社区:开发与算法学习社区 博主个人主页:Killing Vibe的博客...三、饿汉 有了上述的思路,就可以写出饿汉了: public class SingleTon { // 惟一的这一个对象 private static SingleTon singleTon...public static SingleTon getSingleton() { return singleTon; } } 饿汉,天然的线程安全。...总结一下就三步走: 构造方法私有化(保证对象的产生个数) 类的内部提供这个唯一的对象(static) 类提供返回这个唯一的对象的静态方法供外部使用 四、懒汉 只有第一次调用getSingleTon...总结 以上就是多线程场景下用Java实现饿汉和懒汉的所有注意事项,纯手打,希望各位老铁能多多支持,有什么疑问可以私信博主~~~感谢支持

31450

模式——懒汉与饿汉

设计模 使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。...模式 一个类只能创建一个对象,即模式,该模式可以保证系统中该类只有一个实例,并提供一个 访问它的全局访问点,该实例被所有程序模块共享。...比如在某个服务器程序中,该服务器的配置 信息存放在一个文件中,这些配置数据由一个对象统一读取,然后服务进程中的其他对象再 通过这个对象获取这些配置信息,这种方式简化了在复杂环境下的配置管理。...饿汉模式                 就是说不管你将来用不用,程序启动时就创建一个唯一的实例对象 优点:简单                 缺点:1、对象初始化时数据太多,导致启动慢                            ...2、多个类有初始化依赖关系,饿汉模式无法控制 //饿汉模式 class InfoSingleton { public: static InfoSingleton& GetInstance() {

17630

设计模式:模式 (关于饿汉和懒汉)

模式的应用场景很多, 比如我们电脑的操作系统的回收站就是一个很好的模式应用,电脑上的文件、视频、音乐等被删除后都会进入到回收站中;还有计算机中的打印机也是采用模式设计的,一个系统中可以存在多个打印任务...下面将列举几种模式的实现方式,其关键方法都是用static修饰的,并且,为了避免的类被频繁创建对象,我们可以用private的构造函数来确保单类无法被外部实例化。...懒汉和饿汉 在程序编写上,一般将模式分为两种,分别是饿汉和懒汉饿汉:在类加载时就完成了初始化,所以类加载比较慢,但获取对象的速度快。...代码实现 1、饿汉 (可用) public class Singleton { private final static Singleton INSTANCE = new Singleton();...好了,模式的几种写法就介绍到这了,最后简单总结一下模式的优缺点 模式的优缺点 优点 类只有一个实例,节省了内存资源,对于一些需要频繁创建销毁的对象,使用模式可以提高系统性能; 模式可以在系统设置全局的访问点

86720

模式和多例模式(懒汉饿汉

一、什么是、多例: 所谓就是所有的请求都用一个对象来处理,比如我们常用的service和dao层的对象通常都是的,而多例则指每个请求用一个新的对象来处理,比如action; 二、模式和多例模式说明...: 模式和多例模式属于对象模式。...模式的对象在整个系统中只有一份,多例模式可以有多个实例。 它们都不对外提供构造方法,即构造方法都为私有。 三、模式适用场景: 需要生成唯一序列的环境 需要频繁实例化然后销毁的对象。...single =new Singleton(); return single; } } 优点: 第一次调用才初始化,避免浪费内存 缺点: 加锁了执行效率低 2、饿汉...: Double CheckLock也就是双重锁判断机制(由于JVM底层模型原因,偶尔会出问题, 不建议使用),是在懒汉上发展而来 /** *Double CheckLock实现 *Double

28020

模式只有饿汉和懒汉吗?这几种模式你见过吗

设计模式之模式-模式的几种实现方式及小案例 本文来源:凯哥Java(wx:kaigejava) 模式有几种?饿汉、懒汉。这两种是最常见的。还有几种是对其扩展的。...其中在懒汉基础上扩展的有两种。即:加锁的懒汉及双重判断加锁的懒汉 还有一种是使用内部类实现的。即:内部静态类的 最后一种是比较少见的。使用枚举的。 我们来看看每种方式代码都怎么写。...联系凯哥--》公众号:凯哥Java(kaigejava) 凯哥个人博客:www.kaigejava.com 懒汉: 我们来看看懒汉优缺点: 饿汉饿汉的优缺点及适用场景: 加锁的懒汉...: 再来看看加锁懒汉的由来: 双重判断加锁的懒汉: 有了加锁的懒汉为什么还会有加锁双重判断的呢?...请看下图: 内部静态类是实现的懒汉: 这种模式的有缺: 使用枚举: 优点缺点: 我们使用模式做个小案例。

61540

【地铁上的设计模式】--创建型模式:模式(二)--饿汉

什么是饿汉 饿汉模式是一种常用的创建型设计模式,它能够确保一个类只有一个实例,并提供了一个全局访问点。...不同于懒汉模式在需要时才去创建实例,饿汉模式在类加载时就已经创建好了实例,因此也被称为饿汉预先加载模式。这种模式的核心思想是在类被加载时就进行初始化,从而避免了线程同步问题。...由于实例在类加载时就已经创建好了,因此饿汉模式的效率比懒汉模式更高。 如何实现饿汉模式 饿汉模式的实现步骤如下: 将构造函数设为私有,防止外部通过构造函数创建实例。...在饿汉模式中,实例在类加载时就已经创建好了,因此不存在线程同步问题。...总结 饿汉模式是一种简单的模式实现方式,其实例在类加载时就已经被创建,因此不存在线程同步问题。在多线程环境下也能保证只有一个实例被创建。

22410

设计模式-------懒汉饿汉(超详细,附代码)

设计模式-------懒汉饿汉 设计模式是一种很常见的设计模式 ?...在这里介绍两种设计模式 懒汉饿汉 设计模式的特点: 1.设计模式保证一个类只有一个实例。 2.要提供一个访问该类对象实例的全局访问点。...设计模式要点 对一些类来说,只有一个实例是很重要的。例如很多时候对于某个系统只需要拥有一个全局对象,这样有利于我们协调系统的整体行为。...再比如说某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个对象统一读取,然后服务进程中的其他对象 再通过这个对象获取这些配置信息。...分析举例 在JAVA设计模式 1.饿汉如下所示 /** * Created by ${wuyupku} on 2019/3/15 12:39 */ class Singleton01{

10.2K14

scala:分别使用懒汉饿汉实现模式

java中,模式需要满足以下要求: 构造方法私有化,使得本类之外的地方不能使用构造方法new出对象 提供私有静态属性,接收对象 公共的、静态的getInstance方法,便于外界拿到对象...想了解Java模式的请转到:Java模式-懒汉、恶汉、静态内部类、枚举以及线程安全问题 在scala中 主构造方法私有化,即类名后面加上private修饰 使用类的伴生对象达到Java中的static...效果,伴生对象只会加载一次 /** * Desc: SCALA设计模式 * -懒汉 * -饿汉 */ object Scala16_TestSingleton { def...和std2输出的地址一样 val std2: Student16 = Student16.getInstance() println(std2) } } //懒汉...null def getInstance():Student16={ if(s == null){ s = new Student16 } s } } //饿汉

74110

详谈饿汉、和懒汉模式

一、基本概念 模式属于创建型设计模式。 确保一个类只有一个实例,并提供该实例的全局访问点。 实现: 使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现。 二、结构 类图: ?...三、几类经典模式实现 1、懒汉-线程不安全 下面的实现中,私有静态变量 uniqueInstance 被延迟实例化,这样做的好处是,如果没有用到该类,那么就不会实例化 uniqueInstance...if(uniqueInstance == null) uniqueInstance = new Singleton(); return uniqueInstance; } 3、饿汉...-线程安全-无延迟加载 饿汉就是 : 采取直接实例化 uniqueInstance 的方式,这样就不会产生线程不安全问题。...枚举实现 (+测试): public class Singleton { private Singleton() { } public static Singleton

47120

详谈饿汉、和懒汉模式

一、基本概念 模式属于创建型设计模式。 确保一个类只有一个实例,并提供该实例的全局访问点。 实现: 使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现。...三、几类经典模式实现 1、懒汉-线程不安全 下面的实现中,私有静态变量 uniqueInstance 被延迟实例化,这样做的好处是,如果没有用到该类,那么就不会实例化 uniqueInstance...if(uniqueInstance == null) uniqueInstance = new Singleton(); return uniqueInstance; } 3、饿汉...-线程安全-无延迟加载 饿汉就是 : 采取直接实例化 uniqueInstance 的方式,这样就不会产生线程不安全问题。...枚举实现 (+测试): public class Singleton { private Singleton() { } public static Singleton

43110

Java模式的不同写法(懒汉饿汉、双检锁、静态内部类、枚举)

目录 1、饿汉模式 2、懒汉模式 3、双重校验锁【推荐】 4、静态内部类【推荐】 5、枚举 6、模式的线程安全性 ---- Java(Singleton)模式是一种广泛使用的设计模式。...但是,如果占用的内存比较大,或只是在某个特定场景下才会用到,使用饿汉模式就不合适了,这时候就需要用到懒汉模式进行延迟加载。...这样的话,只要应用中不使用内部类,JVM就不会去加载这个类,也就不会创建对象,从而实现懒汉的延迟加载。也就是说这种方式可以同时保证延迟加载和线程安全。...5、枚举 枚举模式最安全,反射和序列化都是。 《Effective Java》作者也是强烈推荐枚举方式实现。...模式有很多种的写法,我总结一下: (1)饿汉:线程安全 (2)懒汉:非线程安全 (3)双检锁:线程安全 (4)静态内部类:线程安全 (5)枚举:线程安全 如何选择 如果我们在程序启动后

59330
领券