(三)死磕并发之深入Hotspot源码剖析Synchronized关键字实现_objectsynchronizer fast_exit
偏向锁的释放,需要等待全局安全点(在这个时间点上没有正在执行的字节码),首先暂停拥有偏向锁的线程,然后检查持有偏向锁的线程是否还活着,如果线程不处于活动状态,则将对象头设置成无锁状态。最后唤醒暂停的线程。通过观察大家会发现,如果我们启动了偏向锁,会执行 ObjectSynchronizer::fast_enter的逻辑,而如果我们没有开启偏向锁,则执行 ObjectSynchronizer::slow_enter逻辑,绕过偏向锁,直接进入轻量级锁。否则,锁膨胀成重量级锁,实现重量级锁的释放锁逻辑。
原创
2024-04-21 18:01:56 ·
703 阅读 ·
0 评论