我的web应用程序代码是用java、swing、hibernate组合编写的,运行在tomcat5中。当一个表在更新/删除过程中被锁定,并且在经过一段时间的错误后不自行解锁时,会出现这样的情况: mysql锁等待超时,尝试重新启动事务,这将导致应用程序的不可访问性。
我必须编写一个java调度程序,它将定期检查锁状态,并在指定的时间后,比如30秒,解锁表。
具体来说,,我想知道如何检查表是否已锁定?和如何解锁?
谢谢
发布于 2012-06-18 11:49:47
您可以使用具有非常低超时时间的GET_LOCK来检查是否存在锁。如果返回代码为0,则另一个线程有一个锁,否则得到1,而线程拥有锁。
至于如何解锁,这有点困难。它可能是一个完全不同的应用程序,持有锁,它可能持有它有一个很好的理由。我不知道是否有可能强行撬开锁。但我不认为你真的想这么做。
https://stackoverflow.com/questions/11081972
复制相似问题