final이 아닌 @GuardedBy 어노테이션을 보고합니다.
final이 아닌 필드를 보호할 경우 필드 자체(변경 가능)가 아닌 필드 값이 잠금되므로 예기치 않은 경합 상태가 발생할 수 있습니다.
예:
private ReadWriteLock lock = new ReentrantReadWriteLock(); // final이 아닌 보호하는 필드
private Object state;
@GuardedBy("lock")
public void bar() {
state = new Object();
}
지원되는 @GuardedBy 어노테이션:
net.jcip.annotations.GuardedByjavax.annotation.concurrent.GuardedByorg.apache.http.annotation.GuardedBycom.android.annotations.concurrency.GuardedByandroidx.annotation.GuardedBycom.google.errorprone.annotations.concurrent.GuardedBy