ILock.TryLock Метод

Определение

Перегрузки

Имя Описание
TryLock()

Получает блокировку только в том случае, если она свободна во время вызова.

TryLock(Int64, TimeUnit)

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

TryLock()

Получает блокировку только в том случае, если она свободна во время вызова.

[Android.Runtime.Register("tryLock", "()Z", "GetTryLockHandler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")]
public bool TryLock();
[<Android.Runtime.Register("tryLock", "()Z", "GetTryLockHandler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")>]
abstract member TryLock : unit -> bool

Возвращаемое значение

true Значение ,если блокировка была приобретена и false в противном случае

Атрибуты

Комментарии

Получает блокировку только в том случае, если она свободна во время вызова.

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

Типичным идиом использования для этого метода будет:

{@code
            Lock lock = ...;
            if (lock.tryLock()) {
              try {
                // manipulate protected state
              } finally {
                lock.unlock();
              }
            } else {
              // perform alternative actions
            }}

Это использование гарантирует, что блокировка разблокирована, если она была приобретена, и не пытается разблокировать, если блокировка не была приобретена.

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

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

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

TryLock(Int64, TimeUnit)

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

[Android.Runtime.Register("tryLock", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryLock_JLjava_util_concurrent_TimeUnit_Handler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")]
public bool TryLock(long time, Java.Util.Concurrent.TimeUnit? unit);
[<Android.Runtime.Register("tryLock", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryLock_JLjava_util_concurrent_TimeUnit_Handler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")>]
abstract member TryLock : int64 * Java.Util.Concurrent.TimeUnit -> bool

Параметры

time
Int64

максимальное время ожидания блокировки

unit
TimeUnit

единица времени аргумента time

Возвращаемое значение

Значение , если блокировка была приобретена и время ожидания истекло до получения блокировки

Атрибуты

Исключения

Значение , если текущий поток прерван при получении блокировки (и прерывание приобретения блокировки поддерживается)

Комментарии

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

Если блокировка доступна, этот метод возвращается немедленно со значением true. Если блокировка недоступна, текущий поток становится отключенным для целей планирования потоков и находится в неактивном состоянии до тех пор, пока не произойдет одно из трех вещей: <блокировка><получается текущим потоком; или >ли<>некоторые другие потоки#прерывания прерывает текущий поток, и прерывание приобретения блокировки поддерживается; или <ли>указанное время ожидания истекает </ul>

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

Если текущий поток: <ul><li>имеет его прерванное состояние при входе в этот метод; или <li>является Thread#прерывание при получении блокировки, и прерывание приобретения блокировки поддерживается, /ul<> затем возникает, InterruptedExceptionа состояние прерывания текущего потока очищается.

Если указанное время ожидания истекает, возвращается значение false . Если время меньше нуля или равно нулю, метод не будет ждать вообще.

<Рекомендации> по реализации b</b>

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

Реализация может благоприязать реагировать на прерывание по сравнению с обычным возвратом метода или сообщать о времени ожидания.

Реализация Lock может обнаруживать ошибочное использование блокировки, например вызов, который приведет к взаимоблокировке, и может вызвать исключение (снято) в таких обстоятельствах. Обстоятельства и тип исключения должны быть задокументированы этой Lock реализацией.

Java документации по java.util.concurrent.locks.Lock.tryLock(long, java.util.concurrent.TimeUnit).

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

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