偏向锁撤销流程中,在到达全局安全点之前,当前线程是什么状态?

发布于 2022-09-12 02:36:49 字数 270 浏览 11 评论 0

当线程A获取了偏向锁以后,有线程B尝试获取偏向锁,无论此时线程A有没有离开临界区,一定会进入偏向锁撤销流程,撤销流程中将会判定是否撤销偏向锁。其中要进行判定的话必须先要等待到达全局安全点(safe point),那问题就是,从撤销流程开始,到全局安全点之间的这段时间里:
1.线程B是处于什么状态?(既然线程B没获取到锁,应该是不会继续运行的吧?而偏向锁又不会让线程阻塞)
2.线程A会不会再次进入临界区?

我当前的理解是撤销流程开始后并不会立即到达全局安全点,期间会有一段时间间隔,不知道对不对

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

音盲 2022-09-19 02:36:49

没有细研究过,但我猜和GC时的要求进入safepoint应该是类似的。

1.线程B当然还是RUNNABLE状态,线程B会向VMTread提交要求进入safepoint的任务,然后等待返回,类似于GC线程要求其他线程进入safepoint之后他再工作

2.线程A会不会再次进入临界区不好说,得看要求检测safepoint的时机

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文