带有java.util.concurrent.locks.ReadWriteLock的@GuardedBy注释

Gre*_*tes 40 java concurrency annotations static-analysis findbugs

注释受保护的字段的正确/首选方法是什么,ReadWriteLock以便像FindBugs这样的工具可以利用注释?应该ReadWriteLock简单地在@GuardedBy注释中写下名称.是否有理由在@GuardedBy注释中写入只读锁的名称,或只写写锁?不FindBugs的,或其他工具,甚至支持ReadWriteLock@GuardedBy

Mic*_*uff 32

在撰写本文时,@GuardedBy Findbugs尚未完全实现,主要用于文档.(部分实施.)

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

例如后者:

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

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

    public void work() {
        synchronized(lock) {
            workWith(innards.goop());
        }
    }        
}
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,似乎GuardedBy注释不再适用于FindBugs.我偶然发现了这个问题(FindBugs忽略了明显的错误)并找到了这张开放票:http://sourceforge.net/p/findbugs/bugs/765/ (3认同)
  • 谢谢!简单来说,我不知道FindBugs艺术的状态(因此我问了这个问题!:),但是提到注释可能没有实现的链接似乎已经有四年了. (2认同)
  • 同样,但链接仍然是他们的bug跟踪器.如果它是_my_ bug跟踪器,当我对它进行任何更新时,我会搜索@guardedby.但话说回来,它不是我的bug追踪器 (2认同)