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

  • 电子设备租赁费专票税率
  • 小规模纳税人销售已使用固定资产
  • 代理税务有哪些机构
  • 收到进口增值税发票可以直接抵扣吗
  • 购买的固定资产没有使用,是否计提折旧
  • 实收资本叫别人代缴可以不
  • 虚开发票的受票企业将会受到什么处罚?
  • 单位之间借款利息可以开票么
  • 开具增值税发票销货清单的最新规定是什么
  • 纳税人提供植物养护服务属于什么服务
  • 企业范围内已利用的荒山要交城镇土地使用税吗
  • 收购免税农产品的进项税可以抵扣吗
  • 个人缴纳公积金有什么好处
  • 网速保护功能介绍
  • 收回物资的加工成本
  • 流动资产损毁报废收益
  • 2021工资扣税标准公式
  • centos apache配置文件
  • php自学教程
  • 广告公司的设计服务费计入什么科目
  • 试用期人员工资财务记账
  • 收取包装物押金税率
  • 奖金发放的原则
  • 买发票前金税盘需要抄税和清卡吗?
  • zendframework3中文手册
  • 除湿器属于固定资产什么类别
  • 详解Yii2.0 rules验证规则集合
  • php转换器
  • 后端怎么返回数据给前端
  • php和mysql关系
  • 微信小程序在哪里打开
  • cnn数据集
  • css教程网站
  • 身份证校验python代码
  • thinkphp apidoc
  • 软件开发服务费税率
  • 企业自建房出售给员工个人后还需要缴纳土地使用税么
  • 注销公司怎么搞
  • 收保险公司工伤怎么赔偿
  • 销售旧货的增值税是销项税吗
  • mysql卡住了
  • 机关单位工会经费的来源
  • 计提坏账准备的金额怎么算的
  • 在租赁公司贷款买的车绿本上会有我的名字吗
  • 分红股份会减少吗
  • 一般纳税人退税条件
  • 多计提费用 怎么冲
  • 固定资产申请报告
  • 普通进项发票怎么做分录
  • 营业外收入的账户核算有哪些
  • 交易性金融资产属于流动资产
  • 公司给的佣金需要上多少税
  • 未交增值税增加记哪方
  • 销售出库单需要盖章吗
  • 以前年度损益调整属于哪类科目
  • 逾期纳税申报会被罚款吗
  • 备用金的支取流程图
  • 多开税票的钱怎么算
  • 劳务派遣中谁给劳动者发工资
  • 不能抵扣的进项税额转出会计分录
  • win10有三个系统
  • win8 photoshop
  • ubuntu 操作系统
  • centos怎么添加用户
  • linux以root用户登录
  • 东芝笔记本图片及型号
  • 怎样打开windows设置页面
  • Mac OS X El Capitan公测版下载地址及安装教程图解
  • win7系统更新怎么关闭
  • Win8出现奇怪爆音的完美解决方法
  • marvell 网卡驱动
  • js动态表格可修改表格数据
  • js表单验证代码Email
  • jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
  • python编写步骤
  • HTTP状态代码以及定义(解释)
  • jQuery插件扩展extend的简单实现原理
  • 如何在税务系统增加开票人员
  • 四川国税局普通发票查询?
  • 契税完税证明怎么补打
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设