【发布时间】:2020-09-16 12:33:08
【问题描述】:
我有类似下面提到的代码。我正在释放 finally 块中的锁定,但 sonarqube 仍然显示“不释放所有路径上的锁定”消息。 我尝试将 lock.isHeldByCurrentThread() 更改为 lock.isLocked() 但仍然没有运气。而且我没有在任何其他方法中使用锁定。不知道如何解决这个声纳问题。
class Sample{
ReentrantLock lock = new ReentrantLock();
public Response<T> method(Inputs input){
try{
// some logic
lock.lock();
}catch(Exceptions e){
// handle exception
}finally{
if(lock.isHeldByCurrentThread()){
lock.unlock();
}
}
}
}
【问题讨论】:
-
但我也检查了 if(lock.islocked()) 。此条件检查所有线程。
标签: java sonarqube locking reentrantlock