有什么正确/首选的方法来注释受ReadWriteLock保护的字段,以便诸如FindBugs之类的工具可以利用该注释?应该将ReadWriteLock的名称简单地写在@GuardedBy批注中。是否有理由在@GuardedBy批注中仅写入读取锁或写入锁的名称? FindBugs或其他工具是否甚至支持ReadWriteLock中的@GuardedBy

最佳答案

在撰写本文时,@GuardedBy isn't fully implemented by Findbugs只是用于文档。 (已部分实现。)

我总是使用@GuardedBy("readwritelock")或用于synchronize的对象。

例如后者:

class Example {
    private Object lock = new Object();

    @GuardedBy("lock")
    private Stuff innards = ...;

    public void work() {
        synchronized(lock) {
            workWith(innards.goop());
        }
    }
}

10-07 16:22