thread
2020-12-30 11:31:12 0 举报
java线程锁
作者其他创作
大纲/内容
暂停线程
撤销偏向锁
使用cas修改markword
runnable
锁对象头是否存储thread2
等待锁
new
不成功
锁对象头是否存储thread1
running
指向重量级锁的指针|0|10
没有
访问同步块
恢复线程
线程栈分配空间存储markword
执行同步块
thread2阻塞
自旋获取锁
cas替换mark word
撤销偏向锁状态
失败
把markword改为轻量级锁
无锁状态
0|10
重量级锁
wait()
hashcode|0|01
block
.start()放入线程池
thread1|1|01
将对象头markword中的线程ID指向thread1获得锁
成功
dead
mark word
指向栈的指针|0|00
释放锁并唤醒等待线程
thread 2
偏向锁状态
空|0|01
thread 1
获取到cpu时间片
线程A
轻量级锁
放入runnable
.sleep()/join()完后放入runnable
0 条评论
下一页