JAVA轻量级锁执行过程
2021-11-12 15:36:43 2 举报
JAVA轻量级锁执行过程
作者其他创作
大纲/内容
至少存在一个以上线程与当前线程竞争锁对象,轻量级锁膨胀为重量级锁
有其他线程竞争锁资源,释放锁并唤醒其他线程
在当前线程的栈帧中创建一个名为锁记录的空间
检查锁对象的Mark Word是否指向的是当前线程的锁记录
替换失败
当前线程持有了该锁对象,将所对象的Mark Word的标志位改为00,表示当前所对象进入轻量锁定状态
CAS操作成功
代码执行完毕
CAS操作将锁对象的Mark Word替换为指向当前线程栈帧锁记录的指针
指向的是当前线程的锁记录
当前线程执行同步代码
指向的不是当前线程的锁记录
当前线程执行同步过程完毕
当前线程即将进入同步块
CAS操作失败
同步对象未被锁定
替换成功
CAS操作将锁对象的Mark Word和当前线程栈帧锁记录替换回来
收藏
0 条评论
下一页