What is a proper/preferred way to annotate fields that are protected with a ReadWriteLock so that tools like FindBugs can leverage the annotation? Should the name of the ReadWriteLock simply be written in the @GuardedBy annotation. Is there ever a reason to write the name of just the read lock, or just the write lock, in the @GuardedBy annotation? Does FindBugs, or other tools, even support ReadWriteLock in @GuardedBy?
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());         }     }         } 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 );      }    }   If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With