synchronized锁升级流程
2021-07-25 16:27:06 0 举报
synchronized锁升级的大致流程
作者其他创作
大纲/内容
轻量级锁(自旋)
对象头markword已经有了锁的标记,但是并未偏向任何一个线程
偏向锁不一定比自旋锁效率高,如在明确知道会有多个线程竞争的情况下,偏向锁会涉及到锁撤销,这时候直接使用自旋锁更好。exp:JVM启动过程因为要将很多class加载到内存,因此涉及到多个线程竞争内存空间,在这种明确多线程竞争的情况下,不会打开偏向锁,会过一段时间再打开
普通对象
偏向锁已启动
偏向锁未启动
重度竞争(耗时过长、调用wait()等)
重量级锁
轻度竞争
偏向锁
new
自旋是消耗CPU资源的,如果自旋的时间过长或线程过多,CPU会被大量消耗。而重量级锁是有lock pool的,未获取到锁的线程会进入lock pool,不会消耗CPU资源
匿名偏向锁
收藏
0 条评论
下一页