The field or method to which this annotation is applied can only be accessed when holding a
particular lock, which may be a built-in (synchronization) lock, or may be an explicit
java.util.concurrent.locks.Lock.
The argument determines which lock guards the annotated field or method:
- this : The string literal "this" means that this field is guarded by the class in which it
is defined.
- class-name.this : For inner classes, it may be necessary to disambiguate 'this'; the
class-name.this designation allows you to specify which 'this' reference is intended
- itself : For reference fields only; the object to which the field refers.
- field-name : The lock object is referenced by the (instance or static) field specified by
field-name.
- class-name.field-name : The lock object is reference by the static field specified by
class-name.field-name.
- method-name() : The lock object is returned by calling the named nil-ary method.
- class-name.class : The Class object for the specified class should be used as the lock
object.
This annotation is similar to javax.annotation.concurrent.GuardedBy but has RetentionPolicy#SOURCE so it is not in published artifacts. We only apply this to private
members, so there is no reason to publish them and we avoid requiring end users to have to depend
on the annotations in their own build. See the original issue for more info.
This class is internal and is hence not for public use. Its APIs are unstable and can change
at any time.