static 字段的实例字段或方法上的 @GuardedBy 注解。 用 static 来保护非 static 可能会导致过度的锁争用,因为访问任何对象实例中的每个锁定字段均将阻止同时访问每个对象实例中的字段。
示例:
private static ReadWriteLock lock = new ReentrantReadWriteLock(); //static 保护字段
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