有什么正确/首选的方法来注释受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());
}
}
}