要注释受ReadWriteLock保护的字段,以便像FindBugs这样的工具能够利用该注释,哪种方法是正确的/首选的?是否应该在@GuardedBy注释中简单地写入ReadWriteLock的名称。有没有理由在@GuardedBy注释中只写读锁,或者只写写锁的名称?FindBugs或其他工具甚至支持@GuardedBy中的ReadWriteLock吗
发布于 2011-11-13 07:30:43
在撰写本文时,@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());
}
}
}发布于 2011-10-25 23:24:22
Find bugs支持以下注释:
net.jcip.annotations.GuardedBy
net.jcip.annotations.Immutable
net.jcip.annotations.NotThreadSafe
net.jcip.annotations.ThreadSafe这些GuardedBy注释的用法如下:
@ThreadSafe
public class Queue<E> implements java.util.Queue<E>
{
private ConcurrentLinkedQueue readWriteLock;
@GuardedBy( value="readWriteLock" )
public boolean offer(E o)
{
return queue.offer( o );
}
} https://stackoverflow.com/questions/7825504
复制相似问题