@Documented @Retention(value=RUNTIME) @InheritedAnnotation @Target(value={METHOD,CONSTRUCTOR}) 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