单例设计模式-懒汉式(线程安全)
懒汉式(线程安全)
有缺点说明
解决了线程不安全问题
效率太低了,每个线程在想获得类的实例时候,执行getInstance()方法都要进行同步.而其实这个方法只执行了一次实例化代码就够了,后面的想获取该类实例,直接return就行了.方法进行同步效率太低
结论: 在实际开发中,不推荐使用这种方式
代码演示
package com.atguigu.principle.singleton.type04;/**
* @author victor
* @site https://victorfengming.github.io/
* @company XDL
* @project java_mode
* @package com.atguigu.principle.singleton.type04
* @created 2021-02-02 19:29
* @function ""
*/
public class Singleton04 {public static void main(String[] args) {Singleton ins = Singleton.getInstance();Singleton ins2 = Singleton.getInstance();System.out.println(ins);System.out.println(ins.hashCode());System.out.println(ins2);System.out.println(ins2.hashCode());System.out.println(ins == ins2);}}// 懒汉式 (线程安全_ 同步放法_)
class Singleton{private static Singleton instance;private Singleton() {}// 提供一个静态的公有方法 加入了同步处理的代码// 解决线程安全问题// 即懒汉式// 我们在这里加一个关键字 synchronizedpublic static synchronized Singleton getInstance() {if (instance == null) {instance = new Singleton();}return instance;}
}
更多:在这里
单例设计模式-懒汉式(线程安全)相关推荐
- 单例设计模式-懒汉式(线程不安全)
懒汉式(线程不安全) 优缺点说明 起到了Lazy Loading的效果,但是只能在单线程下使用 如果在多线程下, 一个线程进入if(singleton == null)判断 语句块,还未来得及往下执行 ...
- 单例设计模式懒汉式和恶汉式
一,单例设计模式懒汉式和恶汉式 懒汉式在类加载时不初始化,延迟加载.(配置文件) 饿汉式在类加载时初始化,加载慢,获取对象快. 饿汉式是线程安全的, 懒汉式需要加synchronized,否则不安全. ...
- 设计模式之单例设计模式(懒汉式)
package july.star.thread22; /*** Teacher* 饿汉式:类一加载就加载* 懒汉式:需要时才加载* 面试题:单例模式的思想是什么,请用代码体现.* 开发:饿汉式(不会 ...
- JAVA_Lesson8(传智播客笔记之继承、单例设计模式懒汉式、饿汉式)
数组对象工具的建立(重要的是这种思想) 主函数是静态的,主函数需要调用的也需要static. 当有2个.java文件时,先编译含有函数功能的.java文件,再编译含主函数的.java文件.(因为主函数 ...
- 单例设计模式-ThreadLocal线程单例
package com.learn.design.pattern.creational.singleton;/*** 是基于ThreadLocal的* 所以必不可少要使用这个类* * 我们看一下这个类 ...
- 【C++设计模式】Singleton 单例设计模式与线程安全
文章目录 何为设计模式(Design Pattern) 单例模式(Singleton) 什么是单例模式? 饿汉单例模式 懒汉单例模式 懒汉单例模式的线程安全版本 经典加锁版本 优化版本:双重检查锁 使 ...
- java饿汉式有啥作用,Java面试 - 什么是单例设计模式,为什么要使用单例设计模式,如何实现单例设计模式(饿汉式和懒汉式)?...
什么是单例设计模式? 单例设计模式就是一种控制实例化对象个数的设计模式. 为什么要使用单例设计模式? 使用单例设计模式可以节省内存空间,提高性能.因为很多情况下,有些类是不需要重复产生对象的.如果重复 ...
- JAVA单例设计模式简单实现(懒汉与恶汉),多例设计模式的简单实现
单例设计模式饿汉式 package Singleton; public class Singleton { private static final Singleton INSTANCE = new ...
- 单例设计模式八种方式——5) 懒汉式(线程安全,同步代码块) 6) 双重检查 7) 静态内部类 8) 枚举
懒汉式(线程安全,同步代码块)应用实例 优缺点说明: 1) 这种方式,本意是想对第四种实现方式的改进,因为前面同步方法效率太低, 改为同步产生实例化的的代码块 2) 但是这种同步并不能起到线程同步的作 ...
最新文章
- DllImport dll中有些啥函数 及 dll中是否用到了别的dll
- Spring集成Redis方案(spring-data-redis)(基于Jedis的单机模式)(待实践)
- python find
- R语言-csv文件数据追加
- USB接口定义(Z)
- 【CF1344D】Résumé Review【数学】【二分】
- @Repository , @Service , @Controller 和 @Component
- (二)再议MII、RMII、GMII接口
- Mycat安全_SQL拦截黑名单---MyCat分布式数据库集群架构工作笔记0034
- PHP 文件以及目录操作
- UVA10602 Editor Nottoobad【贪心】
- dfs时间复杂度_Python实现图的经典DFS、BFS、Dijkstra、Floyd、Prim、Kruskal算法
- jmeter 一个可能引起性能严重下降的断言设置
- 认识ManualResetEvent
- MDK与keilC51共存的方法(成功)MDK与keilC51破解
- 【UE4】获取13位时间戳
- aliases节点解析
- .NET Core容器化(Docker)
- python 函数的返回值类型
- 基因编辑婴儿事件,克隆,转基因大豆,杂交水稻---基因改变会怎么样
热门文章
- 管理好你的愿望,人生将另一个样
- 解决:[ERROR] Error executing Maven. [ERROR] 1 problem was encountered while building the effective set
- DQL、DML、DDL、DCL的概念与区别
- Python中的getpass模块
- java9-1.类,抽象类,接口的综合小练习
- MySQL 调优基础(三) Linux文件系统
- activity生命周期图
- seo专题之开篇有益
- 浅谈jQuery的选择器
- DataGrid 完全攻略之四 (实现统计)