懒汉式(线程安全,同步代码块儿)

懒汉式(线程安全,同步代码块儿)

代码演示

// 懒汉式 (线程安全_ 同步放法_)
class Singleton{private static Singleton instance;private Singleton() {}// 提供一个静态的公有方法 加入了同步处理的代码// 解决线程安全问题// 即懒汉式// 我们在这里加一个关键字 synchronizedpublic static Singleton getInstance() {if (instance == null) {synchronized(Singleton.class){instance = new Singleton();}}return instance;}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X10OUu0Q-1613785230625)(./img/mm/meizi56.jpg)]

优缺点说明

  1. 这总方式,本意是想对于第四种实现方式的改进,因为前面同步方法效率太低,
    改为同步产生实例化的的代码块

  2. 但是这种同步并不能起到线程同步的作用,跟第三种实现方式遇到的情形一致,假如一个线程进入了if(singleton == null)判断语句块儿,还未来得及往下执行,另一个线程也通过了这个判断语句,这时便会产生多个实例

  3. 结论:在实际开发中,不能使用这种方式(没多大卵用)

更多:http://victorfengming.gitee.io/design_pattern/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/455130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

同余定理证明

转载于:https://www.cnblogs.com/cmyg/p/7206474.html

非常抱歉,

非常抱歉,好长一段时间没写了,但是我在博客园偶尔还会写写这个行业必须不断地学才不会被淘汰,幸好我是主动接受知识,我喜欢这个。。。。。。。。。。转载于:https://blog.51cto.com/52770825/1962949

乘基取整法是什么_深入理解计算机系统(六):进制间的转换原理

目录1、进制的介绍2、二进制转换成其他进制3、十进制转换成其他进制4、十六进制转换成其他进制5、总结上一篇博客我们讲解了信息的在计算机中是如何存储以及如何表示的。但是对于各个进制的转换只是一笔带过了,后来作者仔细研究了进制转换的原理,发现还是…

单例设计模式-双重检查

双重检查 双重检查应用实例 代码演示: class Singleton{private static volatile Singleton singleton;private Singleton(){}// 提供一个静态公有方法public static Singleton getInstance() {if (instance null) {synchronized (Singleton.class) {if (instance null) {…

symbian系统开发教程(一)

第一章:Symbian OS简介作者:谢兴 enigma19971hotmail.com---转载需注明出处 下载word文档1.1. Symbian系统简介当前有很多手机运行Symbian OS,数量甚至超出您的想象。到目前为止已经有超过7500 万、100 多种型号的手机运行Sym…

小谈c#数据库存取图片的方式

第一种方式 文件夹与数据库配合 /// <summary>/// 上传图片/// </summary>/// <param name"FUSShopURL">FileUpload对象</param>/// <param name"UpladURL">图片要放到的目录名称</param>/// <returns>如果Fi…

c#课程设计简单题目_《C#项目案例》课程设计题目

1《C#项目案例》课程设计题目一、课程设计的基本目标1、通过本次课程设计&#xff0c;熟练掌握开发语言C#和开发环境——.NET。开发语言的熟练需要通过编写一定长度的代码(1000&#xff5e;2000行代码)才能达到&#xff0c;开发环境的熟练需要反复的程序调试训练。2、加深对软件…

笔记吧

map的第一个为关键值&#xff0c;只可读&#xff0c;不可写。第二个为对应值&#xff1b;vector的消除有很大的困扰&#xff0c;感觉存在很大的局限性&#xff1b;问题——不能够复杂话&#xff0c;一个问题先从较浅的方面想起&#xff0c;其实在现有基础和请况下&#xff0c;不…

单例设计模式-静态内部类

静态内部类 静态内部类应用实例 代码演示 package com.atguigu.principle.singleton.type07;/** * author victor * site https://victorfengming.github.io/ * company XDL * project java_mode * package com.atguigu.principle.singleton.type07 * created 2021-02-02 20…

Symbian系统开发教程(二)

第二章&#xff1a;数据类型与语法 作者&#xff1a;谢兴 enigma19971hotmail.com 转载需注明出处 下载word版本 Symbian系统已经提供了一套已经定义好的内置的数据类型。为了保证你的代码是编译器无关的&#xff0c;应当使用下面symbian系统提供的数…

design php 如何使用ant_Ant Design Pro初探—添加面包屑

Ant Design Pro初探—添加面包屑上次咱们说了新建页面&#xff01;页面建成了&#xff0c;开始填充页面 新建面页面不会的看上一片文章:Ant Design Pro初探—新建页面首先是需要添加家面包屑&#xff0c;上代码&#xff1a;import React, { PureComponent } from react;import …

C++主要操作符重载的定义和总结

C中预定义的运算符的操作对象只能是基本数据类型&#xff0c;实际上&#xff0c;对于很多用户自定义类型&#xff0c;也需要有类似的运算操作。例如&#xff1a; class complex { public: complex(double r0.0,double I0.0){realr;imagI;} void display(); private: do…

原生JS数组去重的几种方法

有时候我们做项目的时候往往会需要把数组里面一些重复的项去掉&#xff0c;但是原生JS有排序&#xff0c;有筛选等等&#xff0c;但是就是没有数组去重怎么办呢&#xff1f;这能怎么办&#xff0c;自己手动实现嘛。&#xff08;以下代码直接在原型上添加的的方法&#xff0c;为…

单例设计模式-枚举

枚举 枚举应用实例 代码演示 package com.atguigu.principle.singleton.type08;/** */ public class SingletonTest08 {public static void main(String[] args) {Singleton instance Singleton.INSTANCE;Singleton instance2 Singleton.INSTANCE;System.out.println(inst…

抛物线交点式公式_抛物线交点式

以下是范文网www zhuodaoren com 分享的6 已知抛物线与轴两交点在轴同侧&#xff0c;它们的距离的平方等于&#xff0c;则的值为( )&#xff0c;希望能帮助到大家!(一)6 已知抛物线与轴两交点在轴同侧&#xff0c;它们的距离的平方等于&#xff0c;则的值为( )函数与一元二次方…

学习的动力

要有自学的意识&#xff0c;这是一个知识不断更新、不断涌现的时代&#xff0c;大学里的很多知识是过时的&#xff0c;就算入校时是热门行业的但很可能四年后毕业找工作时已经变成了夕阳产业&#xff0c;学习是一种能力&#xff0c;但首先是一种态度&#xff0c;一个人想在快速…

java面向对象之父类的引用指向子类的对象

1 package Text; 2 3 public class Job { 4 public void dowork(){ 5 6 } 7 } 1 package Text; 2 3 public class Luosidao extends Job{ 4 public void dowork(){ 5 System.out.println("螺丝刀拧螺丝。。。"); 6 } 7 } 1 packa…

单例模式在JDK应用的源码分析

单例模式在JDK应用的源码分析 单例模式在jdk中的源码分析 在我们JDK中,java.lang.Runtime就是经典的单例模式(恶汉式) 代码分析Debug源码代码说明 public class Runtime {private static Runtime currentRuntime new Runtime();/*** Returns the runtime object associate…

lisp语言cond和if套用_LISP - 决策

决策结构需要程序员指定一个或多个条件由程序进行评估或测试&#xff0c;以及要执行的语句或语句如果条件被确定为true&#xff0c;如果条件被确定为false那么选择要执行其他语句。下面是在大多数编程语言中一个典型的决策结构的一般形式为&#xff1a;LISP提供了以下类型的决策…

H264基本概念之 宏块、片和片组

这几个概念对比音频信号处理可是全新的&#xff0c;下面简要介绍一下定义和作用&#xff1a; 1、宏块&#xff08;Macro Block&#xff09;&#xff1a;一个编码图像首先要划分成多个块&#xff08;4x4 像素&#xff09;才能进行处理&#xff0c;显然宏块应该是整数个块组成&…