this 的 static 字段或方法上的 @GuardedBy 注解。
使用非 static 元素保护 static 元素可能会导致过度并发,多个线程可能在不同的对象上下文中锁定,以同时访问保护字段。
示例:
private ReadWriteLock lock = new ReentrantReadWriteLock();
@GuardedBy("lock")
public static void bar() {
// ...
}
支持的 @GuardedBy 注解为:
net.jcip.annotations.GuardedByjavax.annotation.concurrent.GuardedByorg.apache.http.annotation.GuardedBycom.android.annotations.concurrency.GuardedByandroidx.annotation.GuardedBycom.google.errorprone.annotations.concurrent.GuardedBy