当前位置: 首页 > news >正文

java锁升级简述

锁升级过程:          

        锁对象为o,线程a 在执行,线程b也来获取锁那么就会造成锁升级        

        1 偏向锁->轻量级锁:                

                 会触发safepoint全局安全点,就是暂停所有线程的运行。在安全点之内,会在线程a的栈帧中创建一个所记录,所记录指向锁对象o,将o的markword复制到所记录中,然后将锁对象o的markword设置为轻量级锁状态,也就是最后两位为:00。                

                 思考:为什么偏向锁需要safepoint?                

                 解答:正是由于其偏向的特性,所以使得线程a在锁代码块在执行完后也不会更改锁对象o的markword,那么所有的线程都不知到是否解锁了,又担心在不使用安全点的情况下进行偏向锁撤销的过程中,线程a已经执行完了锁代码,导致锁记录在a不执行同步代码块的时候却依旧持有锁的情况发生。所以会使用safepoint暂停线程,所以,偏向锁的撤销是性能极差的,于是在jdk15之后就将此默认关闭了。        

        2 轻量级锁->重量级锁                

                 safepoint安全点过后,b用cas发现锁对象的对象头为00并且指向另一个线程的锁记录,那么自旋失败,这时候b就会自旋几次,但是都失败,就会为a申请monitor重量级锁,让a的markword指向monitor,owner设置为a,将自己放到monitor的entrylist中等待。        

        3 解锁                

                等到a执行完后,用cas解锁,结果失败,就去执行重量级锁解锁逻辑,将monitor的owner设置为null,并且唤醒entrylist中的线程。 

http://www.dtcms.com/a/475320.html

相关文章:

  • 网站含中国的备案外贸网站建设公司青岛
  • 图片 网站源码免费企业查询
  • 中国逐日格点降水数据集V2(1960–2024,0.1°)
  • 公司的网址杭州百家号优化
  • 太仓市建设招标网站做网站服务器用国外的
  • 【大数据】用户画像
  • 网站建设风险管理计划永久免费网站空间
  • 网站维护的工作内容微信公众号怎么推广
  • 外贸企业网站网站支付方案的设计
  • 网站建设完成确认书网站建设公司 lnmp
  • 做外贸网站用什么空间成都抢先看新钱新闻全搜索
  • 【自记】MaxCompute 补数据与生产环境数据初始化完整说明
  • java监听邮箱并读取邮箱、邮箱内附件内容
  • 乐平市网站建设网站建设板块
  • 新网站怎样做外链wordpress 文章发布时间
  • 视觉语言模型(如 CLIP 或 BLIP) 和 向量数据库 来构建一个智能审核系统 思路
  • 洛谷P5838 [USACO19DEC] Milk Visits G
  • 南京做网站优化的企业做宣传册的公司
  • 消失模铸造数字化转型-数字化智能制造平台在消失模铸造全过程可追溯的深化案例
  • 淄博学校网站建设方案wordpress子主题安全
  • 网站开发的技术难点专业网站建设常州
  • 网站投票页面怎么做低价网站建设推广优化
  • 宁波网站推广宣传wordpress会员导出
  • 湖南网站推广优化电子商务网站建设运营
  • 城乡建设杂志官方网站seo网站推广优化
  • 兼职做网站挣钱么网站的做用
  • 管理软件开发公司网站内容优化的重要性
  • 对网站策划的看法推动高质量发展发言材料
  • Ubuntu CUDA Toolkit安装失败
  • 取消网站备案号个人网页制作设计模板