Java线程死锁:为何Java不能像数据库那样从死锁中恢复?

发布于 2022-09-07 15:53:01 字数 271 浏览 13 评论 0

问题 JVM可否做到和数据库事务处理一样,对死锁进行处理?如果不可以,那么想知道原因是什么?

抛砖引玉:

《Java并发编程实战》中描述顺序死锁现象,提到哲学家进餐问题,数据库事务在顺序死锁发生时会选择一个牺牲者释放资源并可以重新执行,此时事务可正常完成。
由此想到,JVM可否在死锁发生时,找到牺牲者释放资源?如果在JVM层面能够完成死锁避免,多线程编程是否会简单很多?

重申一下,问题是JVM可否做到和数据库事务处理一样,对死锁进行处理?如果不可以,那么想知道原因是什么?

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

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

发布评论

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

评论(2

未蓝澄海的烟 2022-09-14 15:53:01

死锁避免最多是lock()方法在将会导致死锁时抛出一个exception。这使多线程编程更复杂了吧?想象每个lock()方法都有可能exception的情况。。所以PLSQL也挺难写的,PLSQL就是会遇到这种死锁导致的exception,然后总是要想办法处理。

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