位置: IT常识 - 正文

Java 中的Double Check Lock(转)(java中double是什么数据类型)

编辑:rootadmin
Java 中的Double Check Lock(转) - - ITeye技术网站Java 中的Double Check Lock(转) 博客分类:多线程与并发编程Java多线程编程对于多线程编程来说 Java 中的Double Check Lock(转) 博客分类:

多线程与并发编程Java多线程编程

推荐整理分享Java 中的Double Check Lock(转)(java中double是什么数据类型),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:java里面的double,java里的double,java double double,java里double的用法,java里面double什么意思,java里面double什么意思,java double double,java里的double,内容如对您有帮助,希望把文章链接给更多的朋友!

对于多线程编程来说,同步问题是我们需要考虑的最多的问题,同步的锁什么时候加,加在哪里都需要考虑,当然在不影响功能的情况下,同步越少越好,锁加的越迟越优是我们都必须认同的。DCL(Double Check Lock)就是为了达到这个目的。

DCL简单来说就是check-lock-check-act,先检查再锁,锁之后再检查一次,最后才执行操作。这样做的目的是尽可能的推迟锁的时间。网上普遍举的一个例子是延迟加载的例子。

Java代码

publicJava 中的Double Check Lock(转)(java中double是什么数据类型)

class LazySingleton{ private

static

volatile LazySingletoninstance; public

static LazySingletongetInstantce(){ if (instance== null ){ synchronized (LazySingleton. class ){ if (instance== null ){ instance=new LazySingleton(); } } } return instance; } }

对上面的例子来说,我们当然也可以把锁加载方法上,那样的话每次获取实例都需 要获取锁,但其实对这个instance来说,只有在第一次创建实例的时候才需要同步,所以为了减少同步,我们先check了一下,看看这个 instance是否为空,如果为空,表示是第一使用这个instance,那就锁住它,new一个LazySingleton的实例,下次另一个线程来 getInstance的时候,看到这个instance不为空,就表示已经创建过一个实例了,那就可以直接得到这个实例,避免再次锁。这是第一个 check的作用。

第二个check是解决锁竞争情况下的问题,假设现在两个线程来请求getInstance,A、B线程同时发现instance为空,因为我们 在方法上没有加锁,然后A线程率先获得锁,进入同步代码块,new了一个instance,之后释放锁,接着B线程获得了这个锁,发现instance已 经被创建了,就直接释放锁,退出同步代码块。所以这就是check-lock-then check。

网上有很多文章讨论DCL的失效问题,我就不赘述了,Java5之后可以通过将字段

本文链接地址:https://www.jiuchutong.com/zhishi/311679.html 转载请保留说明!

上一篇:电脑学习网首发Linux端游新剑与魔法IP版支付ios端游和Android端游,可立即运营(学网新用什么电脑)

下一篇:React props全面详细解析

  • 笔记本电脑一直自动输入点点(笔记本电脑一直在开机界面进不去)

  • 简单描述计算机系统的构成(简单描述计算机的工作原理)

  • 小米手机安装不了网易云音乐(小米手机安装不了应用宝怎么办)

  • iphone11双卡双待吗(iphone11双卡双待怎么切换)

  • 华为p20快充怎么开启(华为p20快速充电)

  • vivoz5i和z5x的区别(vivoz5i和z5x有啥区别)

  • 查找我的iphone定位准确吗(查找我的iphone定位关了查找会显示什么)

  • qq隐身对方还能看到吗(qq隐身对方还能看到我的空间吗)

  • 小米手机微信发不出去信息是怎么回事(小米手机微信发不出去图片怎么回事)

  • 微信发送消息慢是怎么回事(微信发送信息慢)

  • poe交换机烧坏路由器吗(poe交换机会烧哪些设备)

  • pn结正偏是指(PN结正偏是指AN区电位高于P区BP区电位高于N区)

  • 拼多多拼单是什么规则(拼多多拼单是什么意思没成功)

  • iphone gps设置在哪里(ios gps设置)

  • 怎么看微信运动轨迹(怎么看微信运动点赞记录)

  • word多了一页怎么删(word多了一页删不掉怎么办)

  • 华为的铝硅玻璃耐划吗(华为的铝硅玻璃需要贴膜吗)

  • 抖音怎么注销手机号绑定(抖音怎么注销手机号码不再用)

  • 网易云怎么看附近的人(网易云怎么看附近动态)

  • 惠普176n粉盒型号(惠普m176n粉盒型号)

  • iphone watch蜂窝和gps的区别(iwatch蜂窝和普通有什么区别)

  • airpod2无线充电和普通区别(airpod2无线充电充不进去)

  • 反向问号用键盘怎么打(反向问号怎么打搜狗输入法)

  • 拼多多备案截图是什么(拼多多备案截图在哪里)

  • 抖音怎么发5分钟视频(抖音怎么发5分钟以上的作品配音乐)

  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设 电脑维修 湖南楚通运网络