位置: 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全面详细解析

  • 企业为何放弃免税政策
  • 哪些收据可以入帐
  • 缴纳上一年所得税附件是哪些科目
  • 代建费用在哪里列支
  • 公司收到生育津贴不发给员工 分录
  • 企业所得税季度预缴
  • 小规模能否开利息专用发票?
  • 购买工业用地税费
  • 一个人可以在多家公司任职吗
  • 零申报失败什么原因
  • 公益捐赠流程图
  • 退税发票认证流程
  • 已认证的进项税发票要退回,怎么操作
  • 购买固定资产的账务处理
  • 小规模纳税人普通发票可以抵税吗
  • 外聘人员差旅费应放什么会计科目
  • 转账支票必须对着开发票单位吗?
  • 生产企业出口退税流程
  • 小汽车残值率多少合适
  • 外贸公司发票过期怎么办
  • 定额发票什么时候失效
  • 未认证进项税额转出
  • 联营企业分回的利润交企业所得税吗
  • 小企业长期待摊费用包括哪些
  • 出口退税增值税发票稽核信息
  • 新公司税控盘购买流程
  • 腾讯手游助手卡顿严重
  • 企业报税流程图
  • hif文件怎么打开
  • PHP:session_is_registered()的用法_Session函数
  • thinkphp 数据库查询
  • 公证处会计分录
  • uniapp使用高德地图直接进行导航
  • spring boot整合hibernate
  • node.js教程详细
  • 定时任务java
  • vnc viewer连接windows
  • 月末制造费用转入生产成本,因此期末账户一定无余额吗?
  • 单位社保年底清算
  • 个人所得税申报流程图
  • 预缴个人所得税怎么做分录
  • mysql5.7.17在win2008R2的64位系统安装与配置实例
  • 非盈利机构怎么说
  • 资产负债表的货币资金怎么算
  • 税务申报残保金
  • 管理费用主要核算内容包括什么?
  • 运输费抵扣进项税怎么算
  • 航空运输电子客票行程单查验
  • 长期股权投资追溯调整有几种情况
  • 购买无形资产的入账价值包括增值税吗
  • 公司固定资产抵押贷款无法偿还
  • 固定资产办理竣工结算之后的处理方式
  • 月销售额10万以下一般纳税人免征增值税
  • 盈利能力还有什么能力
  • 公司购买不动产契税税率
  • 确认资产减值损失后可以转回的
  • 建筑安装业,指从事____的企业
  • 不动产固定资产的区别
  • 党费结余如何计算
  • 注册资本实缴后钱怎么出来
  • 账簿设计原则的主要内容
  • 什么是存储过程?有哪些优缺点?
  • sqlserver怎么删除字段
  • ubuntu系统如何安装
  • linux opencl
  • freebsd怎么样
  • macbook怎么剪视频软件
  • centos7命令行快捷键
  • win10如何将我的电脑添加到桌面
  • windows10预览版是什么
  • python的类变量和成员变量
  • angular script
  • jquery截取字符串的方法
  • js怎么修改
  • Python调用大漠插件
  • jquery简单吗
  • android自定义ui
  • 税控发票开票软件(金税盘版)事件代码768功能代码5?
  • 增值税发票清单怎么打印出来
  • 软件企业增值税即征即退政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设