首页 > java > java的锁升级机制

java的锁升级机制

作者:bin

锁有4个状态:无锁、偏向锁、轻量级锁、重量级锁,锁等级又低到高

1.无锁状态:锁最开始是

2.偏向锁: 在有线程A请求获取锁时,就会在锁对象上记录下线程A的线程ID,同时线程上记录下锁栈帧。

3.轻量级锁: 当有线程B请求获取锁时,会根据锁记录的线程ID,找到线程A,看线程A的锁栈帧是否释放,如果没有释放,那么就升级为轻量锁,线程B进行自旋,获取锁。(自旋的原因是,通常情况锁占用时间都很短,避免进行阻塞线程时进行cpu资源切换的代价)

4.重量级锁:当线程B自旋一段时间后,如果依然无法获取锁,或者在线程B未获取到锁,此时线程C又来获取锁,那么锁升级为重量级锁,所有尝试获取该锁状态的线程都进入阻塞状态。

您必须 [ 登录 ] 才能发表留言!