Язык

ReentrantLock.LockInterruptibly Метод

Определение

Получает блокировку, если текущий поток не прерван потоком# прерывания.

[Android.Runtime.Register("lockInterruptibly", "()V", "GetLockInterruptiblyHandler")]
public virtual void LockInterruptibly();
[<Android.Runtime.Register("lockInterruptibly", "()V", "GetLockInterruptiblyHandler")>]
abstract member LockInterruptibly : unit -> unit
override this.LockInterruptibly : unit -> unit

Реализации

Атрибуты

Исключения

Если текущий поток прерван

Комментарии

Получает блокировку, если текущий поток не прерван потоком# прерывания.

Получает блокировку, если она не удерживается другим потоком и возвращается немедленно, установив счетчик удержания блокировки на один.

Если текущий поток уже содержит эту блокировку, количество удержаний увеличивается по одному, а метод возвращается немедленно.

Если блокировка удерживается другим потоком, текущий поток становится отключенным для целей планирования потоков и находится в состоянии спячки до тех пор, пока не произойдет одно из двух действий:

<Ул>

<li>Блокировка приобретается текущим потоком; или

<li>Некоторые другие потоки#прерывания прерывают текущий поток.

</ul>

Если блокировка приобретается текущим потоком, то для счетчика удержаний блокировки задано одно.

Если текущий поток:

<Ул>

<li>имеет свой прерванный набор состояний при входе в этот метод; или

<li>— Thread#прерывание при получении блокировки.

</ul>

Затем InterruptedException возникает и состояние прерванного текущего потока очищается.

В этой реализации, так как этот метод является явной точкой прерывания, предпочтение отдается реагированию на прерывание при обычном или повторном получении блокировки.

Java документации по java.util.concurrent.locks.ReentrantLock.lockInterruptibly().

Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".

Применяется к