报告 @GuardedBy 注释用于实例字段和方法,其中保护符是 static 字段。 用 static 来保护非 static 可能会导致过度的锁争用,因为访问任何对象实例中的每个锁定字段将阻止同时访问每个对象实例中的字段。

示例:


    private static ReadWriteLock lock = new ReentrantReadWriteLock(); //static guarding field
    private Object state;

    @GuardedBy("lock")
    public void bar() {
        state = new Object();
    }

支持的 @GuardedBy 注解是: