Java线程死锁:为何Java不能像数据库那样从死锁中恢复?
问题 JVM可否做到和数据库事务处理一样,对死锁进行处理?如果不可以,那么想知道原因是什么?
抛砖引玉:
《Java并发编程实战》中描述顺序死锁现象,提到哲学家进餐问题,数据库事务在顺序死锁发生时会选择一个牺牲者释放资源并可以重新执行,此时事务可正常完成。
由此想到,JVM可否在死锁发生时,找到牺牲者释放资源?如果在JVM层面能够完成死锁避免,多线程编程是否会简单很多?
重申一下,问题是JVM可否做到和数据库事务处理一样,对死锁进行处理?如果不可以,那么想知道原因是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
https://www.quora.com/How-doe...
死锁避免最多是lock()方法在将会导致死锁时抛出一个exception。这使多线程编程更复杂了吧?想象每个lock()方法都有可能exception的情况。。所以PLSQL也挺难写的,PLSQL就是会遇到这种死锁导致的exception,然后总是要想办法处理。