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

网站建设指南 读书心得建设行业证书全国联网查询

网站建设指南 读书心得,建设行业证书全国联网查询,seo关键词排名优化软件,asp网站栏目修改文章目录 前言1. 无锁状态2. 偏向锁3. 轻量级锁4. 重量级锁锁升级路径总结 前言 在Java中,synchronized 是一种内置锁机制,用于确保多个线程对共享资源的同步访问。从JDK 1.6开始,为了提高性能和减少锁竞争带来的开销,Java引入了…

文章目录

  • 前言
  • 1. 无锁状态
  • 2. 偏向锁
  • 3. 轻量级锁
  • 4. 重量级锁
  • 锁升级路径
  • 总结


前言

在Java中,synchronized 是一种内置锁机制,用于确保多个线程对共享资源的同步访问。从JDK 1.6开始,为了提高性能和减少锁竞争带来的开销,Java引入了锁升级的概念。锁升级的过程主要是从偏向锁开始,根据实际的竞争情况逐步升级为轻量级锁、重量级锁(无锁状态 -> 偏向锁 -> 轻量级锁 -> 重量级锁)。
以下是详细的锁升级过程:
在这里插入图片描述

1. 无锁状态

  • 初始状态:对象刚被创建时,没有任何线程竞争,处于无锁状态。

2. 偏向锁

  • 目的:减少无竞争情况下的锁开销。
  • 过程:
    • 当第一个线程访问同步块并尝试获取锁时,会在对象头的 Mark Word 中记录该线程的 ID,同时将偏向锁标志位设置为 1,表示对象处于偏向锁状态。
    • 此后,该线程再次进入同步块时,只需检查对象头的 Mark Word 中记录的线程 ID 是否与自己的 ID 一致,如果一致,则可以直接进入同步块,无需进行任何同步操作。
    • 如果有其他线程尝试获取该锁,说明存在锁竞争,偏向锁就会被撤销,升级为轻量级锁。撤销偏向锁需要在全局安全点(所有线程都停止执行字节码)进行,会带来一定的性能开销。
  • 优点:在单线程重复获取锁的情况下,性能最优。

3. 轻量级锁

  • 触发条件:当有另一个线程尝试获取已被偏向的锁时,偏向锁会升级为轻量级锁。
  • 过程:
    • JVM会在当前线程的栈帧中创建一个锁记录(Lock Record),并将对象头中的标记复制到锁记录中。
    • 当线程第一次进入同步块时,会在栈帧中创建锁记录,并尝试使用 CAS 操作将对象头的 Mark Word 替换为指向锁记录的指针。如果成功,当前线程获得锁,对象头的 Mark Word 变为指向锁记录的指针,锁标志位设置为 00,表示对象处于轻量级锁状态。
    • 如果有其他线程也尝试获取该锁,CAS 操作会失败,此时当前线程会进行自旋等待锁的释放。自旋是指线程会在原地循环等待一段时间,而不是立即阻塞,因为在很多情况下,持有锁的线程很快就会释放锁。
    • 如果自旋次数达到一定阈值(可以通过参数 -XX:PreBlockSpin 调整)或者有多个线程同时竞争锁,轻量级锁就会升级为重量级锁。
  • 优点:在多线程轻度竞争的情况下,避免了重量级锁的开销。

4. 重量级锁

  • 触发条件:当轻量级锁竞争激烈,CAS操作多次失败时,锁会升级为重量级锁。
  • 过程:
    • 当轻量级锁升级为重量级锁时,对象头的 Mark Word 会被替换为指向重量级锁的指针,锁标志位设置为 10。
    • 线程竞争重量级锁失败后,会被阻塞,进入等待队列,直到持有锁的线程释放锁后,操作系统会唤醒等待队列中的线程,让它们再次竞争锁。
  • 优点:在高度竞争的情况下,重量级锁能有效管理线程的阻塞和唤醒。

锁升级路径

  • 偏向锁 -> 轻量级锁:一旦检测到偏向锁存在竞争,即另一个线程尝试获取锁时,偏向锁将被撤销,并尝试转换为轻量级锁。
  • 轻量级锁 -> 重量级锁:如果轻量级锁也面临激烈的竞争,不能有效处理并发请求时,锁将升级为重量级锁以保证线程安全。
    注意:锁可以从偏向锁升级到轻量级锁,再升级到重量级锁,但是这个过程是不可逆的。

总结

  • 偏向锁:适用于单线程重复获取锁的场景。
  • 轻量级锁:适用于多线程轻度竞争的场景。
  • 重量级锁:适用于多线程高度竞争的场景。
    synchronized 锁升级的过程是一个逐步从低开销到高开销的过程,根据不同的场景自动选择合适的锁状态,从而在大多数情况下提高了锁的性能。在单线程频繁访问同步块的场景下,偏向锁可以减少锁竞争的开销;在多线程交替访问同步块的场景下,轻量级锁可以通过自旋避免线程的阻塞和唤醒,提高性能;而在多线程同时竞争锁的场景下,重量级锁可以保证线程的安全同步。

http://www.dtcms.com/wzjs/570552.html

相关文章:

  • 熊岳网站在哪做厦门人才网最新招聘信息
  • 遂宁网站建设公司东莞营业厅
  • 现在网站建设 如何保证安全网站首页线框图怎么做
  • 百度速页建站如何开发应用
  • 中国水利建设网站国外直播做游戏视频网站
  • ks免费刷粉网站推广马上刷网站建设公司科技寡头正在垄断世界
  • 嘉兴php网站开发制作相册音乐相册模板
  • 免费的网站建造湖南省建设厅网站
  • 江西省工程建设信息官方网站中铁建设集团有限公司招聘信息2021
  • 一个wordpress程序搭建多个网站怎么创建一个属于自己的平台
  • 生产营销网站开发联系方式做前端的女生压力大吗
  • 简述阐述网站建设的步骤过程让人做网站需要准备什么条件
  • 宁夏企业网站建设专业的网站制作
  • 做热图的在线网站网站建设选题
  • 企业三合一建站公司具体该怎么找知名app开发公司
  • 不懂的做网站wordpress使用培训
  • 如何给企业做网站无锡做网站首选众诺
  • 深圳专业网站开发公司盐城网站建设咨询
  • 指数网站平原县网站seo优化排名
  • 阿里云官方网站东莞建站模板搭建
  • 网站怎么做IPv6福永镇网站建设
  • 网商网站怎么做上海网络维护找哪家好
  • 如何将网站挂载域名网上网城网站
  • 手机网站设计论文wordpress中文安装竟然是英文的
  • 专业微网站建设公司首选公司wordpress点击图片上传
  • 浙江网上职工之家seo成创网络
  • 潍坊网站开发招生信息wordpress主题有什么用
  • 广州专业做外贸网站建设企业网站建设的报价
  • 建外贸网站的服务器连接wordpress
  • 网站建设方案的企业百度软件中心官网