偏向锁撤销流程中,在到达全局安全点之前,当前线程是什么状态?
当线程A获取了偏向锁以后,有线程B尝试获取偏向锁,无论此时线程A有没有离开临界区,一定会进入偏向锁撤销流程,撤销流程中将会判定是否撤销偏向锁。其中要进行判定的话必须先要等待到达全局安全点(safe point),那问题就是,从撤销流程开始,到全局安全点之间的这段时间里:
1.线程B是处于什么状态?(既然线程B没获取到锁,应该是不会继续运行的吧?而偏向锁又不会让线程阻塞)
2.线程A会不会再次进入临界区?
我当前的理解是撤销流程开始后并不会立即到达全局安全点,期间会有一段时间间隔,不知道对不对
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
没有细研究过,但我猜和GC时的要求进入safepoint应该是类似的。
1.线程B当然还是RUNNABLE状态,线程B会向VMTread提交要求进入safepoint的任务,然后等待返回,类似于GC线程要求其他线程进入safepoint之后他再工作
2.线程A会不会再次进入临界区不好说,得看要求检测safepoint的时机