懒汉式(线程安全)

有缺点说明

  1. 解决了线程不安全问题

  2. 效率太低了,每个线程在想获得类的实例时候,执行getInstance()方法都要进行同步.而其实这个方法只执行了一次实例化代码就够了,后面的想获取该类实例,直接return就行了.方法进行同步效率太低

  3. 结论: 在实际开发中,不推荐使用这种方式

代码演示

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;}
}

更多:在这里

单例设计模式-懒汉式(线程安全)相关推荐

  1. 单例设计模式-懒汉式(线程不安全)

    懒汉式(线程不安全) 优缺点说明 起到了Lazy Loading的效果,但是只能在单线程下使用 如果在多线程下, 一个线程进入if(singleton == null)判断 语句块,还未来得及往下执行 ...

  2. 单例设计模式懒汉式和恶汉式

    一,单例设计模式懒汉式和恶汉式 懒汉式在类加载时不初始化,延迟加载.(配置文件) 饿汉式在类加载时初始化,加载慢,获取对象快. 饿汉式是线程安全的, 懒汉式需要加synchronized,否则不安全. ...

  3. 设计模式之单例设计模式(懒汉式)

    package july.star.thread22; /*** Teacher* 饿汉式:类一加载就加载* 懒汉式:需要时才加载* 面试题:单例模式的思想是什么,请用代码体现.* 开发:饿汉式(不会 ...

  4. JAVA_Lesson8(传智播客笔记之继承、单例设计模式懒汉式、饿汉式)

    数组对象工具的建立(重要的是这种思想) 主函数是静态的,主函数需要调用的也需要static. 当有2个.java文件时,先编译含有函数功能的.java文件,再编译含主函数的.java文件.(因为主函数 ...

  5. 单例设计模式-ThreadLocal线程单例

    package com.learn.design.pattern.creational.singleton;/*** 是基于ThreadLocal的* 所以必不可少要使用这个类* * 我们看一下这个类 ...

  6. 【C++设计模式】Singleton 单例设计模式与线程安全

    文章目录 何为设计模式(Design Pattern) 单例模式(Singleton) 什么是单例模式? 饿汉单例模式 懒汉单例模式 懒汉单例模式的线程安全版本 经典加锁版本 优化版本:双重检查锁 使 ...

  7. java饿汉式有啥作用,Java面试 - 什么是单例设计模式,为什么要使用单例设计模式,如何实现单例设计模式(饿汉式和懒汉式)?...

    什么是单例设计模式? 单例设计模式就是一种控制实例化对象个数的设计模式. 为什么要使用单例设计模式? 使用单例设计模式可以节省内存空间,提高性能.因为很多情况下,有些类是不需要重复产生对象的.如果重复 ...

  8. JAVA单例设计模式简单实现(懒汉与恶汉),多例设计模式的简单实现

    单例设计模式饿汉式 package Singleton; public class Singleton { private static final Singleton INSTANCE = new ...

  9. 单例设计模式八种方式——5) 懒汉式(线程安全,同步代码块) 6) 双重检查 7) 静态内部类 8) 枚举

    懒汉式(线程安全,同步代码块)应用实例 优缺点说明: 1) 这种方式,本意是想对第四种实现方式的改进,因为前面同步方法效率太低, 改为同步产生实例化的的代码块 2) 但是这种同步并不能起到线程同步的作 ...

最新文章

  1. DllImport dll中有些啥函数 及 dll中是否用到了别的dll
  2. Spring集成Redis方案(spring-data-redis)(基于Jedis的单机模式)(待实践)
  3. python find
  4. R语言-csv文件数据追加
  5. USB接口定义(Z)
  6. 【CF1344D】Résumé Review【数学】【二分】
  7. @Repository , @Service , @Controller 和 @Component
  8. (二)再议MII、RMII、GMII接口
  9. Mycat安全_SQL拦截黑名单---MyCat分布式数据库集群架构工作笔记0034
  10. PHP 文件以及目录操作
  11. UVA10602 Editor Nottoobad【贪心】
  12. dfs时间复杂度_Python实现图的经典DFS、BFS、Dijkstra、Floyd、Prim、Kruskal算法
  13. jmeter 一个可能引起性能严重下降的断言设置
  14. 认识ManualResetEvent
  15. MDK与keilC51共存的方法(成功)MDK与keilC51破解
  16. 【UE4】获取13位时间戳
  17. aliases节点解析
  18. .NET Core容器化(Docker)
  19. python 函数的返回值类型
  20. 基因编辑婴儿事件,克隆,转基因大豆,杂交水稻---基因改变会怎么样

热门文章

  1. 管理好你的愿望,人生将另一个样
  2. 解决:[ERROR] Error executing Maven. [ERROR] 1 problem was encountered while building the effective set
  3. DQL、DML、DDL、DCL的概念与区别
  4. Python中的getpass模块
  5. java9-1.类,抽象类,接口的综合小练习
  6. MySQL 调优基础(三) Linux文件系统
  7. activity生命周期图
  8. seo专题之开篇有益
  9. 浅谈jQuery的选择器
  10. DataGrid 完全攻略之四 (实现统计)