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

  • iqoo8pro怎么反向充电(vivo手机反向充电怎么开启)

    iqoo8pro怎么反向充电(vivo手机反向充电怎么开启)

  • vivo NEX 3s屏幕的材质是什么(vivo nex3 5g屏幕)

    vivo NEX 3s屏幕的材质是什么(vivo nex3 5g屏幕)

  • 外文数据库有哪些(外文数据库哪个有全文)

    外文数据库有哪些(外文数据库哪个有全文)

  • 荣耀v30和v30pro膜通用吗(荣耀30pro和荣耀30pro+膜通用吗)

    荣耀v30和v30pro膜通用吗(荣耀30pro和荣耀30pro+膜通用吗)

  • 滴滴派单可以不接吗(滴滴派单不想接怎么办)

    滴滴派单可以不接吗(滴滴派单不想接怎么办)

  • 快手上每日打卡是什么(快手上每日打卡能间断吗)

    快手上每日打卡是什么(快手上每日打卡能间断吗)

  • 台式机加内存条直接插上就行了吗(台式机加内存条有什么好处)

    台式机加内存条直接插上就行了吗(台式机加内存条有什么好处)

  • 苹果预激活是什么意思(苹果预激活是什么机)

    苹果预激活是什么意思(苹果预激活是什么机)

  • 12306候补订单退单多久到账 (12306候补订单退单后未退款)

    12306候补订单退单多久到账 (12306候补订单退单后未退款)

  • 云下载是什么(云下载是正版windows吗)

    云下载是什么(云下载是正版windows吗)

  • 手机程序锁定怎么取消(手机程序上锁)

    手机程序锁定怎么取消(手机程序上锁)

  • 淘宝上拒绝签收点哪里(淘宝上拒绝签收怎么操作)

    淘宝上拒绝签收点哪里(淘宝上拒绝签收怎么操作)

  • oppo怎么设置桌面插件(oppo怎么设置桌面时间显示)

    oppo怎么设置桌面插件(oppo怎么设置桌面时间显示)

  • 支付宝怎么设置刷脸(支付宝怎么设置余额宝不自动转入)

    支付宝怎么设置刷脸(支付宝怎么设置余额宝不自动转入)

  • 淘宝怎么上传高清图片(淘宝如何上传)

    淘宝怎么上传高清图片(淘宝如何上传)

  • 电脑上怎么设计标签(电脑上怎么设计图形)

    电脑上怎么设计标签(电脑上怎么设计图形)

  • 默认网名是什么意思(默认网络什么意思)

    默认网名是什么意思(默认网络什么意思)

  • 路由器冒红灯怎么办(路由器冒红灯怎么回事儿)

    路由器冒红灯怎么办(路由器冒红灯怎么回事儿)

  • 华为p30时间在哪里设置(华为p30时间显示设置在哪里)

    华为p30时间在哪里设置(华为p30时间显示设置在哪里)

  • 苹果后置摄像头模糊(苹果后置摄像头镜像模式怎么调整)

    苹果后置摄像头模糊(苹果后置摄像头镜像模式怎么调整)

  • 老年机收不到短信怎么回事(老年机收不到短信怎么弄)

    老年机收不到短信怎么回事(老年机收不到短信怎么弄)

  • Linux下多线程下载工具MWget和Axel使用介绍(linux多线程运行)

    Linux下多线程下载工具MWget和Axel使用介绍(linux多线程运行)

  • MacOS bigsur系统怎么开启黑暗模式? MacOS深色模式的用法(macos big sur怎么升级)

    MacOS bigsur系统怎么开启黑暗模式? MacOS深色模式的用法(macos big sur怎么升级)

  • 在沙滩上休息的灰海豹幼崽,英国Blakeney Point自然保护区 (© Kevin Sawford/Getty Images)(在沙滩上的语句)

    在沙滩上休息的灰海豹幼崽,英国Blakeney Point自然保护区 (© Kevin Sawford/Getty Images)(在沙滩上的语句)

  • v-model的双向数据绑定实现原理(附:案例和项目实例)(v-model的双向绑定原理)

    v-model的双向数据绑定实现原理(附:案例和项目实例)(v-model的双向绑定原理)

  • 【手把手教安装】VUE安装教程+VScode配置!!!(怎样安装∪sb)

    【手把手教安装】VUE安装教程+VScode配置!!!(怎样安装∪sb)

  • 企业投资收益要开发票吗
  • 增值税的免税项目有哪些
  • 发行股票支付给承销商的发行费用计入
  • 非居民企业税率表最新
  • 固定资产盘盈怎么算
  • 出售股份是利好吗
  • 评估入账的开发权是否可以税前扣除?
  • 增值税的价外费用不包括什么
  • 其他应付款借方余额表示什么
  • 生产企业出口货物必须以什么为计税依据计算免抵退税额
  • 工业企业采购原材料
  • 固定资产处置计算公式
  • 银行承兑汇票到期后多长时间失效
  • 业务招待费不超过销售收入的5‰
  • 个人转让公司限售股纳税地点要求
  • 应付票据发生与偿还怎么计算?
  • 老板请客吃饭拿餐饮发票公司报销怎么账务处理?
  • bios设置独立显卡优先启动
  • 为什么我的windows10
  • win11系统优化教程
  • 手机word文档怎么加照片
  • 接入设备检测
  • 税务局返还的手续费需开发票吗
  • 土地增值税扣除项目金额怎么算
  • 稿酬所得的个税怎么计算
  • 安装winsock
  • 管理费用属于损益类吗
  • 厂房改造支出可以计入厂房价值吗
  • 企业固定资产账户2019年6月初借方余额5000000元
  • 浏览器分析
  • 公司注销账面实收资本如何处理
  • 前端v3
  • php 数学函数
  • apache 反射工具类
  • 微信转账怎么处理退回去
  • 普通发票冲红后还会有税吗
  • python datetime把日期转换字符串
  • vuejs echarts
  • javascript高阶
  • 新公司有免税政策吗
  • python中函数的用法
  • vue解决跨域的几种办法
  • 平价转让股权怎么交企业所得税
  • 计提工资的时候跟发放的时候不一样怎么办
  • 应收账款的账务改为公司招待费用怎么做会计分录
  • 厂区地面硬化属于土建还是市政
  • 餐饮服务需要卫生许可证吗
  • mysql5.6设置密码
  • 发票红冲要去税务局吗
  • 收购发票加计扣除会计分录
  • 增值税专用发票的税率是多少啊
  • 维修设备增值税税率
  • 应付账款长时间不付款怎么处理
  • 暂估成本以后也没有票回来了
  • 跨年的社保,账务怎么处理?
  • 单位食堂油烟机多长时间清洗一次
  • 知识产权服务费可以计入研发费用吗
  • 长期借款的利息费用计入什么科目
  • 出口收到货款怎么做账
  • 收购 发票
  • 发票认证完了该怎么取消
  • 往来的款项性质有哪些
  • 房租费计提如何入账
  • 镜的镜像截图
  • ubuntu x
  • kvm虚拟机性能调优
  • winxp开机界面后老重启
  • cpqa1000.exe是安全进程吗 cpqa1000进程有什么作用
  • linux创建个人主页
  • 屏幕适配android常用方法
  • python jieba用法
  • windows下dos命令
  • jquery animate源码
  • shc加密后不能运行
  • Python工程师面试题 与Python Web相关
  • javascript设计
  • jquery cookie用法
  • 稽查局是税务局的派出机构还是内设机构
  • 个人所得税全员申报什么时候开始的
  • 江苏省教师增量绩效多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设