@param arg the release argument. This value is always the one
passed to a release method, or the current state value upon
entry to a condition wait. The value is otherwise
uninterpreted and can represent anything you like.
@return {@code true} if this release of shared mode may permit a
waiting acquire (shared or exclusive) to succeed; and
{@code false} otherwise
@throws IllegalMonitorStateException if releasing would place this
synchronizer in an illegal state. This exception must be
thrown in a consistent fashion for synchronization to work
correctly.
@throws UnsupportedOperationException if shared mode is not supported
Attempts to set the state to reflect a release in shared mode.
<p>This method is always invoked by the thread performing release.
<p>The default implementation throws {@link UnsupportedOperationException}.
@param arg the release argument. This value is always the one passed to a release method, or the current state value upon entry to a condition wait. The value is otherwise uninterpreted and can represent anything you like. @return {@code true} if this release of shared mode may permit a waiting acquire (shared or exclusive) to succeed; and {@code false} otherwise @throws IllegalMonitorStateException if releasing would place this synchronizer in an illegal state. This exception must be thrown in a consistent fashion for synchronization to work correctly. @throws UnsupportedOperationException if shared mode is not supported