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

  • 印花税计税依据含不含增值税
  • 印花税处罚适用征管法吗
  • 办税员的工作职责
  • 全年交多少税可以退
  • 安置残疾人加计扣除
  • 专项资金审计的目的
  • 超市费用能否税前扣减?
  • 国有企业业务招待费管理办法
  • 销售退回 账务处理
  • 员工对公司造成损失的,可以起诉吗
  • 公司车辆怎么申请
  • 注销企业时所有权怎么办
  • 外币折算买入价卖出价
  • 银行承兑贴息率是年利率吗
  • 开发票时含税和不含税是什么意思?
  • 远程清卡失败怎么办
  • 盈余积累转增股本的个税问题
  • 公司清算实收资本是零吗
  • 劳务报酬的申报流程
  • 王者荣耀中墨子的最强出装
  • 银行网银测试
  • win10打开txt
  • 专业版 win10
  • thinkphp框架介绍
  • php检测文件是否存在
  • 喀拉拉邦地理位置
  • 高薪技术企业的有效期是几年
  • php显示文件目录及路径
  • 固定资产后续支出一律计入固定资产成本
  • 应付票据抵付应付账款会计分录
  • php实现发送邮件
  • 非盈利组织固定资产没入帐 怎么调账
  • php语言设计模式之单例模式
  • 私人医院需要缴纳哪些税费
  • java图片转换成文件流
  • transformer add norm
  • uniapp获取手机通讯录
  • php 方括号
  • tmux复制粘贴
  • lincom命令
  • 公章盖的字不完整有效吗
  • 小规模纳税人的税率是多少
  • 呆账核销账务处理程序
  • 增值税发票怎么领取
  • 开自家车出差怎样报销
  • 酒店如何控制成本汇报怎么写
  • db2常用操作语句
  • 可供分配的利润包括
  • 收到一张普通发票怎么做账
  • 开票系统服务费计入什么费用
  • 交车辆购置税需要什么材料
  • 银行日记账登记依据
  • 银行扣的账户管理费属于什么科目
  • 融资租出的设备是不是资产
  • mysql5.7.29安装
  • sql server的介绍
  • mysql优化技巧实战
  • 在一台服务器上安装软件
  • Win2008 Server Core如何操作?5个步骤学会Win2008 Server Core操作
  • Win7 64位系统XP模式失效的原因及解决方法
  • vista和win10
  • libegl.dll病毒
  • windows安装服务器
  • mac最近使用的文稿打不开
  • Win10 Mobile 10586.306提前上手视频评测
  • 一边做游戏一边学英语
  • android item属性
  • cocos2d android
  • 如何在手机上直接买彩票
  • u3d手游开发
  • Node.js node-schedule定时任务隔多少分钟执行一次的方法
  • unity游戏项目开发教程
  • javascript用处
  • jquery操作元素样式
  • qrcode怎么生成
  • 深圳国税总局
  • 汽车票换票需要手续费吗
  • 为什么进了网页不能登录
  • 国家税务总局年底结算
  • 中华人民共和国道路交通安全法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设