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

佛山外贸网站建设机构搜索网站有哪些

佛山外贸网站建设机构,搜索网站有哪些,简单好看的网页设计代码,常见网络营销方式有哪些synchronized 锁升级机制详解 Java中的synchronized锁会经历一个从无锁到偏向锁,再到轻量级锁,最后到重量级锁的升级过程,这种优化称为锁升级或锁膨胀。以下是完整的锁升级流程和原理分析: 一、锁状态总览 锁状态存储内容适用场…

synchronized 锁升级机制详解

Java中的synchronized锁会经历一个从无锁到偏向锁,再到轻量级锁,最后到重量级锁的升级过程,这种优化称为锁升级锁膨胀。以下是完整的锁升级流程和原理分析:

一、锁状态总览

锁状态存储内容适用场景优缺点
无锁对象正常状态单线程访问无竞争开销
偏向锁线程ID + Epoch(时间戳)同一线程重复访问加解锁几乎无代价
轻量级锁指向栈中锁记录的指针多线程交替访问自旋消耗CPU
重量级锁指向互斥量(mutex)的指针多线程竞争激烈线程阻塞唤醒开销大

二、锁升级完整流程

第一个线程访问
出现第二个线程
自旋超过阈值/第三个线程
批量重偏向
批量撤销
无锁
偏向锁
轻量级锁
重量级锁
重置偏向锁

三、各阶段详细原理

1. 偏向锁(Biased Locking)

对象头结构

|-------------------------------------------------------|--------------------|
|                  Mark Word (64 bits)                  |       State        |
|-------------------------------------------------------|--------------------|
| unused:25 | identity_hashcode:31 | unused:1 | age:4 | biased_lock:1 | 01 |
|-------------------------------------------------------|--------------------|
|  thread:54 |       epoch:2       | unused:1 | age:4 | biased_lock:1 | 01 |
|-------------------------------------------------------|--------------------|

工作流程

  1. 第一个线程访问时,通过CAS将线程ID写入对象头
  2. 该线程再次进入时只需检查线程ID是否匹配
  3. 出现竞争时(另一个线程尝试获取锁),撤销偏向锁

JVM参数

-XX:+UseBiasedLocking  # 启用偏向锁(JDK15后默认禁用)
-XX:BiasedLockingStartupDelay=4000  # 延迟启用时间(ms)

2. 轻量级锁(Lightweight Lock)

加锁过程

  1. 在当前线程栈帧中创建锁记录(Lock Record)
  2. 拷贝对象头Mark Word到锁记录(Displaced Mark Word)
  3. 用CAS将对象头替换为指向锁记录的指针
  4. 成功则获取锁,失败则自旋或升级

对象头变化

|-------------------------------------------------------|--------------------|
|               Pointer to Lock Record                  |       State        |
|-------------------------------------------------------|--------------------|
|              62 bits                 |      00        |       lightweight |
|-------------------------------------------------------|--------------------|

3. 重量级锁(Heavyweight Lock)

实现原理

  • 依赖操作系统互斥量(mutex)实现
  • 未获取锁的线程进入阻塞状态
  • 通过监视器(Monitor)管理,涉及用户态到内核态的切换

对象头结构

|-------------------------------------------------------|--------------------|
|               Pointer to Heavyweight Monitor          |       State        |
|-------------------------------------------------------|--------------------|
|              62 bits                 |      10        |       heavyweight |
|-------------------------------------------------------|--------------------|

四、关键升级触发条件

升级路径触发条件
无锁 → 偏向锁第一个线程访问同步块
偏向锁 → 轻量级锁第二个线程尝试获取锁(发生竞争)
轻量级锁 → 重量级锁自旋超过阈值(-XX:PreBlockSpin,JDK6后自适应自旋)或第三个线程参与竞争

五、特殊处理机制

1. 批量重偏向(Bulk Rebias)

场景:当一类对象的偏向锁被多个线程访问,但未真正竞争时
行为:JVM会批量修改这些对象的偏向线程ID(epoch值递增)
阈值:默认20次(-XX:BiasedLockingBulkRebiasThreshold

2. 批量撤销(Bulk Revoke)

场景:当一类对象的偏向锁总是发生竞争
行为:JVM会禁用该类的偏向锁功能
阈值:默认40次(-XX:BiasedLockingBulkRevokeThreshold

六、锁升级性能影响

锁状态适用场景性能特点
偏向锁单线程重复访问加解锁几乎无开销(仅1次CAS)
轻量级锁多线程交替访问自旋消耗CPU,但避免线程阻塞
重量级锁高并发竞争线程阻塞/唤醒开销大(微秒级)

七、实战建议

  1. 偏向锁优化

    # 对明确存在竞争的类禁用偏向锁
    -XX:-UseBiasedLocking
    
  2. 自旋优化

    # 开启自适应自旋(默认开启)
    -XX:+UseSpinning
    -XX:PreBlockSpin=10  # 传统自旋次数(JDK6后无效)
    
  3. 监控工具

    # 查看锁竞争情况
    jstack <pid> | grep -A 10 "java.lang.Thread.State"# JFR记录锁事件
    jcmd <pid> JFR.start duration=60s filename=lock.jfr
    

八、与ReentrantLock对比

特性synchronizedReentrantLock
实现机制JVM内置,自动升级Java API实现
灵活性相对固定可中断、定时获取、公平锁等
性能JDK6后优化接近ReentrantLock高竞争下表现更好
锁降级不支持支持(通过ReadWriteLock)

锁升级机制是JVM对synchronized性能优化的核心设计,理解这一过程有助于:

  • 正确评估同步代码性能
  • 合理选择同步方案
  • 针对性优化高并发场景
http://www.dtcms.com/wzjs/399939.html

相关文章:

  • 西宁做网站_君博优选网推是什么
  • 如何做影视网站的标题宣传推广计划
  • 网站格式图片百度云群组
  • 简单的小公司企业简介100字seo搜索排名优化方法
  • 个旧网站建设淘宝代运营公司排名
  • php网站开发多线程开发百度关键词价格查询软件
  • wordpress幻灯片代码邯郸网站seo
  • 南昌定制网站开发企业网站推广的方法有
  • 网站首页详细设计长沙网站搭建优化
  • 中国能源建设集团有限公司怎么样搜索引擎优化核心
  • php网站支付宝接口网络营销七个步骤
  • 专门做三国战纪的网站叫什么营销推广方式有哪些
  • wordpress设置邮件注册湖南seo推广多少钱
  • 别墅设计师排名宁波seo外包服务平台
  • 网站建设管理制度株洲网站设计外包首选
  • 有没有专业收费做网站优化的seo网络推广公司
  • 枣庄网站开发公司百度分公司
  • 免费视频网站制作知乎关键词排名优化工具
  • e时代速递搜索引擎网站建设上海搜索排名优化公司
  • 免费做网站空间品牌设计公司
  • 国外免费下载wordpress主题seo怎么优化方法
  • 做线路板的去哪个网站找工作如何在百度做推广
  • 为什么建设网站很多公司没有优化内容
  • 360免费wifi手机版官方下载seo标签优化方法
  • 秦皇岛做网站优化公司seo推荐
  • 做网站需要跟客户了解什么软件网络营销课程大概学什么内容
  • 网站上可以做文字链接么国家高新技术企业查询
  • 浙江中天建设集团有限公司网站广东网约车涨价
  • 睢宁网站建设培训网站设计
  • wordpress手工升级电商seo是什么