Disables the current thread for thread scheduling purposes unless the
permit is available.
<p>If the permit is available then it is consumed and the call returns
immediately; otherwise
the current thread becomes disabled for thread scheduling
purposes and lies dormant until one of three things happens:
<ul>
<li>Some other thread invokes {@link #unpark unpark} with the
current thread as the target; or
<li>Some other thread {@linkplain Thread#interrupt interrupts}
the current thread; or
<li>The call spuriously (that is, for no reason) returns.
</ul>
<p>This method does <em>not</em> report which of these caused the
method to return. Callers should re-check the conditions which caused
the thread to park in the first place. Callers may also determine,
for example, the interrupt status of the thread upon return.
@param blocker the synchronization object responsible for this
thread parking
Disables the current thread for thread scheduling purposes unless the permit is available.
<p>If the permit is available then it is consumed and the call returns immediately; otherwise the current thread becomes disabled for thread scheduling purposes and lies dormant until one of three things happens:
<ul> <li>Some other thread invokes {@link #unpark unpark} with the current thread as the target; or
<li>Some other thread {@linkplain Thread#interrupt interrupts} the current thread; or
<li>The call spuriously (that is, for no reason) returns. </ul>
<p>This method does <em>not</em> report which of these caused the method to return. Callers should re-check the conditions which caused the thread to park in the first place. Callers may also determine, for example, the interrupt status of the thread upon return.
@param blocker the synchronization object responsible for this thread parking