如何获得锁并在一段时间后强制释放?JAVA

如何获得锁并在一段时间后强制释放?JAVA,java,concurrency,deadlock,Java,Concurrency,Deadlock,我遇到了数据库和java线程死锁的问题,所以是否可以为java线程设置一些时间,使其处于锁内,然后释放它,以防止所有系统挂起?通过这个技巧,我想释放数据库中的锁,使系统返回正常的工作流程,不管某些查询是否会失败……试试看 然而,在大多数情况下,这样做可能被认为是一种黑客行为,而不是一种合适的解决方案。正如@ LoopSt1234所说的,找到并修复根本原因。 < P>如果数据库支持锁等待超时,确保它被配置,或者使用NavaIT选项,如果可用的话,它会立即报告锁错误 IMO,你应该考虑识别和修复根本

我遇到了数据库和java线程死锁的问题,所以是否可以为java线程设置一些时间,使其处于锁内,然后释放它,以防止所有系统挂起?通过这个技巧,我想释放数据库中的锁,使系统返回正常的工作流程,不管某些查询是否会失败……

试试看


然而,在大多数情况下,这样做可能被认为是一种黑客行为,而不是一种合适的解决方案。正如@ LoopSt1234所说的,找到并修复根本原因。

< P>如果数据库支持锁等待超时,确保它被配置,或者使用NavaIT选项,如果可用的话,它会立即报告锁错误

IMO,你应该考虑识别和修复根本原因而不是入侵症状。但找不到问题,因为这是非常罕见的事情,在本地机器上我们永远无法重现:是有Java线程死锁,还是有数据库死锁或活锁?我只是不知道如何接受,wright现在注意到这个勾号=稍后将接受。。。java和java都存在数据库死锁。一些数据库进程长时间处于“事务中的查询”状态,并且一切都挂起。没有在所有JDBC驱动程序上实现FAIK查询超时。感谢您的建议,我将尝试检查这一点。我发现在postgresql中,不支持锁定等待超时,只支持死锁