锁流程
2020-08-03 21:53:34 0 举报
java锁的升级流程
作者其他创作
大纲/内容
进入重量级,自旋的线程阻塞,等待被之前获取到锁的线程唤醒。
是
mark word中的线程ID是否是自己线程的ID
否
获得资源
两个线程都把锁对象的hashCode复制到自己新建的用于存储锁的记录空间,然后使用CAS,竞争的方式,将自己存储锁记录的地址写入mark word
开始
进入自旋
锁状态是偏向锁。
自旋成功
锁升级为轻量锁,新线程根据mark word的线程id通知之前线程暂停,并将mark word内容置空。
结束
成功获取资源(即之前的线程释放了资源),则锁依然是轻量级锁
写入成功
0 条评论
下一页