@GuardedBy annotation with java.util.concurrent.locks.ReadWriteLock
Solution 1:
At the time of this writing, @GuardedBy
isn't fully implemented by Findbugs, and is mostly just for documentation. (It is partially implemented.)
I always use @GuardedBy("readwritelock")
or the object that I use to synchronize
.
For example of the latter:
class Example {
private Object lock = new Object();
@GuardedBy("lock")
private Stuff innards = ...;
public void work() {
synchronized(lock) {
workWith(innards.goop());
}
}
}
Solution 2:
Find bugs supports the following annotations:
net.jcip.annotations.GuardedBy
net.jcip.annotations.Immutable
net.jcip.annotations.NotThreadSafe
net.jcip.annotations.ThreadSafe
Usage of these GuardedBy annotation should be as follows:
@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 );
}
}