@Documented @Retention(value=RUNTIME) @Target(value={METHOD,CONSTRUCTOR}) @InheritedAnnotation public @interface ReleasesNoLocks
@ReleasesNoLocks or a stronger
annotation such as @SideEffectFree.
The method might acquire locks but then release them, or might acquire locks but not release
them (in which case it should also be annotated with @EnsuresLockHeld or
@EnsuresLockHeldIf).
This is the default for methods being type-checked that have no @LockingFree,
@MayReleaseLocks, @SideEffectFree, or @Pure
annotation.
@ReleasesNoLocks provides a guarantee unlike @MayReleaseLocks, which
provides no guarantees. However, @ReleasesNoLocks provides a weaker guarantee than
@LockingFree.
MayReleaseLocks,
LockingFree,
SideEffectFree,
Pure