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

  • 昆明地铁怎么扫码乘车(昆明地铁怎么扫二维码)

    昆明地铁怎么扫码乘车(昆明地铁怎么扫二维码)

  • 美团无法打开微信支付(美团微信打不开)

    美团无法打开微信支付(美团微信打不开)

  • siri怎么持续聊天(siri怎么一直聊天)

    siri怎么持续聊天(siri怎么一直聊天)

  • airpod pro 怎么充电(airpodspro充电怎么冲)

    airpod pro 怎么充电(airpodspro充电怎么冲)

  • 荣耀30s隐藏功能(荣耀30的隐藏功能)

    荣耀30s隐藏功能(荣耀30的隐藏功能)

  • word合并段落怎么设置(word合并段落后采用什么格式)

    word合并段落怎么设置(word合并段落后采用什么格式)

  • 谷歌在哪里下载(谷歌官方怎么下载)

    谷歌在哪里下载(谷歌官方怎么下载)

  • 苹果手机莫名其妙的震动怎么回事(苹果手机莫名其妙黑屏,然后无法打开)

    苹果手机莫名其妙的震动怎么回事(苹果手机莫名其妙黑屏,然后无法打开)

  • ipv4地址中a类b类c类地址分别是如何定义的(ipv4地址中a类b类c类的网络号是)

    ipv4地址中a类b类c类地址分别是如何定义的(ipv4地址中a类b类c类的网络号是)

  • word斜杠怎么打(word斜杠怎么打拆分单元格)

    word斜杠怎么打(word斜杠怎么打拆分单元格)

  • mate30和p40的性能差距(mate30和p40比较)

    mate30和p40的性能差距(mate30和p40比较)

  • 系统重装后为什么进不了系统(系统重装后为什么没有声音)

    系统重装后为什么进不了系统(系统重装后为什么没有声音)

  • txt文件用什么打开

    txt文件用什么打开

  • ipad保修要发票吗(苹果平板保修要发票吗)

    ipad保修要发票吗(苹果平板保修要发票吗)

  • 华为mate20x5G如何打开ar测量功能

    华为mate20x5G如何打开ar测量功能

  • oppoa5什么处理器(oppoa5的处理器好不好)

    oppoa5什么处理器(oppoa5的处理器好不好)

  • 淘宝不显示待发货数字(淘宝不显示待发货待收货)

    淘宝不显示待发货数字(淘宝不显示待发货待收货)

  • 荣耀9x语音助手怎么用(荣耀9x语音助手怎么关闭)

    荣耀9x语音助手怎么用(荣耀9x语音助手怎么关闭)

  • 苹果11原装耳机是无线的吗(苹果11原装耳机图片)

    苹果11原装耳机是无线的吗(苹果11原装耳机图片)

  • 小米手机msa能卸载么(miui msa卸载)

    小米手机msa能卸载么(miui msa卸载)

  • 鼠标驱动在哪(鼠标驱动在哪里找win7)

    鼠标驱动在哪(鼠标驱动在哪里找win7)

  • win11怎么实现单击手写笔打开便笺? win11手写笔快捷操作设置方法(windows11怎么操作)

    win11怎么实现单击手写笔打开便笺? win11手写笔快捷操作设置方法(windows11怎么操作)

  • 白兰花的养殖方法与注意事项(白兰花的养殖方法和注意事项和病虫害)

    白兰花的养殖方法与注意事项(白兰花的养殖方法和注意事项和病虫害)

  • CiteSpace关键词共现图谱含义详细解析与注意事项(citespace关键词共现分析)

    CiteSpace关键词共现图谱含义详细解析与注意事项(citespace关键词共现分析)

  • 深入理解python中的yield(python深入浅出)

    深入理解python中的yield(python深入浅出)

  • 建安增值税怎么计算
  • 企业购进材料入什么账户
  • 2021年专项附加扣除必须要确认吗
  • 计提工资附什么单据
  • 包工包料怎么开税票合适
  • 小规模纳税人免税怎么做账
  • 没申报可以开票嘛
  • 有限合伙企业有经营权吗
  • 零税点的普票和六税点的普票区别
  • 影响无形资产项目金额的有
  • 以前年度税款需要交税吗
  • 个人股东之间股权转让的溢价账务处理
  • 接受捐赠的增值税计入利润总额吗
  • 返利冲抵货款会计分录
  • 实施计划成本存货发生毁损的会计处理怎么做?
  • 两笔不同业务能做一个凭证吗
  • 物流公司一般纳税人怎么报税
  • 稳岗补贴发放给职工需要交个税吗?
  • 营改增后水费差额征税账务处理怎么做?
  • 关联交易的解释
  • 未开票的销售要交增值税吗
  • 现金流量表的余额和资产负债表货币资金是不是一定相等
  • 1697511215
  • 暂估冲回账务处理
  • 监控 固定资产
  • PHP:oci_set_edition()的用法_Oracle函数
  • 如何去掉电脑桌面背景图
  • 现金日记账采用三栏式
  • 科西嘉岛攻略
  • 所得税分配表分录怎么写
  • php实现登录功能
  • 先发货再开票
  • 抖音是如何成功的
  • adan算法
  • websocket怎么用
  • roi opencv
  • 预付款项属于什么
  • 所得税汇算会计处理
  • 企业发生的汇兑差额
  • 行政事业单位福利费开支范围文件
  • 工会账以固定资产投资
  • 没有发票的运输费用怎么入账
  • 损益类科目都是当期损益吗
  • 公司只有收入没有支出违法吗
  • 上年度固定资产费用化了,财报怎么算
  • 偿债基金作用
  • 购入的技术服务作为成本
  • 总账科目和明细账科目有哪些
  • 水电费收据可以入公司帐吗
  • 哪些合同不受法律保护
  • 将购买的货物用于交际应酬可以抵扣进项税额吗
  • 间接持股比例如何分析
  • 会计审核外来凭证怎么做
  • sql server临时表创建语句
  • gamebar.exe是什么进程
  • win7不能复制文件怎么办
  • Windows命令行复制粘贴命令
  • win10 rs3
  • Linux系统怎么安装gz包软件
  • unityfs 加密反编译
  • [置顶]电影名字《收件人不详》
  • 使用权资产
  • opengl的函数
  • 希尔排序数据结构的代码
  • [置顶]bilinovel
  • js setTimeout opener的用法示例详解
  • jquery给复选框赋值
  • angular.js
  • python算法怎么用
  • 浅谈javascript网页编码特效论文
  • javascript基础笔记
  • pass python用法
  • python图片批量重命名
  • javascriptwhile
  • jq中attr用法
  • 贵州省 税务局
  • 重大税务违法案件一案双查标准
  • 电子税务局网上实名认证流程
  • 车辆购置税减免政策上汽大通 大家mifa6
  • 税收筹划六种方法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设