锁
2020-08-17 10:30:18 0 举报
AI智能生成
锁相关
作者其他创作
大纲/内容
状态
无锁状态
偏向锁状态
轻量级锁状态
重量级锁状态
类型
自旋锁
由于线程阻塞和唤醒要从用户态转到核心态,
消耗大量CPU资源,所以引入自旋锁。
其循环检测,不进入线程挂起或睡眠状态
消耗大量CPU资源,所以引入自旋锁。
其循环检测,不进入线程挂起或睡眠状态
JDK1.6
默认10次
默认10次
优化:
适应性自旋锁
适应性自旋锁
上次成功,下次自旋次数增加
上次失败,下次自旋次数减小
上次失败,下次自旋次数减小
偏向锁
场景:单线程
实现:在置换ThreadID的时候依赖一次CAS原子指令
释放:只有竞争才会释放,
线程不会主动释放。
撤销需要等待全局安全点
线程不会主动释放。
撤销需要等待全局安全点
轻量级锁
目的:在没有多线程竞争的前提下,
减少传统的重量级锁使用操作系统互斥量产生的性能消耗
减少传统的重量级锁使用操作系统互斥量产生的性能消耗
场景:线程交替执行同步块的情况,
如果存在同一时间访问同一锁的情况,
必然就会导致轻量级锁膨胀为重量级锁。
如果存在同一时间访问同一锁的情况,
必然就会导致轻量级锁膨胀为重量级锁。
注:有多线程竞争的情况下,
轻量级锁比重量级锁更慢
轻量级锁比重量级锁更慢
重量级锁
定义:依赖于操作系统Mutex Lock所实现的锁,
称之为 “重量级锁”
称之为 “重量级锁”
升降级
升级是单向的
不可降级
0 条评论
下一页