The logic in a method should ensure that locks are released in the methods in which they were acquired. Failure to release a lock increases the potential for deadlocks and could result in runtime errors in production.
public class MyClass {
Lock lock = new Lock();
public void acquireLock() {
lock.lock(); // Noncompliant;
}
public void releaseLock() {
lock.unlock();
}
public void doTheThing() {
acquireLock();
// do work...
releaseLock();
}
}
public class MyClass {
Lock lock = new Lock();
public void doTheThing() {
lock.lock();
// do work...
lock.unlock();
}
}