Поделиться через


Semaphore.TryAcquire Метод

Определение

Перегрузки

TryAcquire()

Получает разрешение от этого семафора, только если он доступен во время вызова.

TryAcquire(Int32)

Получает заданное количество разрешений из этого семафора, только если все доступны во время вызова.

TryAcquire(Int64, TimeUnit)

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

TryAcquire(Int32, Int64, TimeUnit)

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

TryAcquire()

Получает разрешение от этого семафора, только если он доступен во время вызова.

[Android.Runtime.Register("tryAcquire", "()Z", "GetTryAcquireHandler")]
public virtual bool TryAcquire ();
[<Android.Runtime.Register("tryAcquire", "()Z", "GetTryAcquireHandler")>]
abstract member TryAcquire : unit -> bool
override this.TryAcquire : unit -> bool

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

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

Атрибуты

Комментарии

Получает разрешение от этого семафора, только если он доступен во время вызова.

Получает разрешение, если он доступен и возвращается немедленно, со значением true, уменьшая число доступных разрешений на один.

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

Даже если этот семафор был установлен для использования политики справедливого упорядочивания, вызов tryAcquire()<em>/<em> немедленно получает разрешение, если он доступен, независимо от того, ожидают ли другие потоки в настоящее время. Это " barging" поведение может быть полезно в определенных обстоятельствах, даже если он нарушает справедливость. Если вы хотите соблюдать параметр справедливости, используйте #tryAcquire(long, TimeUnit) tryAcquire(0, TimeUnit.SECONDS) его почти эквивалентно (оно также обнаруживает прерывание).

Документация по Java для java.util.concurrent.Semaphore.tryAcquire().

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

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

TryAcquire(Int32)

Получает заданное количество разрешений из этого семафора, только если все доступны во время вызова.

[Android.Runtime.Register("tryAcquire", "(I)Z", "GetTryAcquire_IHandler")]
public virtual bool TryAcquire (int permits);
[<Android.Runtime.Register("tryAcquire", "(I)Z", "GetTryAcquire_IHandler")>]
abstract member TryAcquire : int -> bool
override this.TryAcquire : int -> bool

Параметры

permits
Int32

количество разрешений для получения

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

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

Атрибуты

Исключения

Значение permits

Комментарии

Получает заданное количество разрешений из этого семафора, только если все доступны во время вызова.

Получает заданное число разрешений, если они доступны, и возвращается немедленно, при этом уменьшается trueколичество доступных разрешений по заданному количеству.

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

Даже если этот семафор был установлен для использования политики справедливого упорядочивания, вызов tryAcquire<em>/<em> немедленно получает разрешение, если он доступен, независимо от того, ожидают ли другие потоки в настоящее время. Это " barging" поведение может быть полезно в определенных обстоятельствах, даже если он нарушает справедливость. Если вы хотите соблюдать параметр справедливости, используйте #tryAcquire(int, long, TimeUnit) tryAcquire(permits, 0, TimeUnit.SECONDS) его почти эквивалентно (оно также обнаруживает прерывание).

Документация по Java для java.util.concurrent.Semaphore.tryAcquire(int).

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

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

TryAcquire(Int64, TimeUnit)

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

[Android.Runtime.Register("tryAcquire", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryAcquire_JLjava_util_concurrent_TimeUnit_Handler")]
public virtual bool TryAcquire (long timeout, Java.Util.Concurrent.TimeUnit? unit);
[<Android.Runtime.Register("tryAcquire", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryAcquire_JLjava_util_concurrent_TimeUnit_Handler")>]
abstract member TryAcquire : int64 * Java.Util.Concurrent.TimeUnit -> bool
override this.TryAcquire : int64 * Java.Util.Concurrent.TimeUnit -> bool

Параметры

timeout
Int64

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

unit
TimeUnit

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

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

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

Атрибуты

Исключения

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

Комментарии

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

Получает разрешение, если он доступен и возвращается немедленно, со значением true, уменьшая число доступных разрешений на один.

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

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

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

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

Документация по Java для java.util.concurrent.Semaphore.tryAcquire(long, java.util.concurrent.TimeUnit).

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

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

TryAcquire(Int32, Int64, TimeUnit)

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

[Android.Runtime.Register("tryAcquire", "(IJLjava/util/concurrent/TimeUnit;)Z", "GetTryAcquire_IJLjava_util_concurrent_TimeUnit_Handler")]
public virtual bool TryAcquire (int permits, long timeout, Java.Util.Concurrent.TimeUnit? unit);
[<Android.Runtime.Register("tryAcquire", "(IJLjava/util/concurrent/TimeUnit;)Z", "GetTryAcquire_IJLjava_util_concurrent_TimeUnit_Handler")>]
abstract member TryAcquire : int * int64 * Java.Util.Concurrent.TimeUnit -> bool
override this.TryAcquire : int * int64 * Java.Util.Concurrent.TimeUnit -> bool

Параметры

permits
Int32

количество разрешений для получения

timeout
Int64

максимальное время ожидания разрешений

unit
TimeUnit

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

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

true если все разрешения были приобретены, и false если время ожидания истекло до получения всех разрешений

Атрибуты

Исключения

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

Значение permits

Комментарии

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

Получает заданное число разрешений, если они доступны и возвращаются немедленно, при этом значение trueуменьшает количество доступных разрешений по заданному количеству.

Если недостаточно разрешений доступны, текущий поток становится отключенным для целей планирования потоков и находится в неактивном состоянии до тех пор, пока не произойдет одно из трех вещей: <ul><li Некоторый другой поток вызывает один из #release() release методов для этого семафора, а текущий поток рядом с разрешениями и число доступных разрешений удовлетворяет этому запросу; или <ли другой поток#прерывания прерывает текущий поток; или li>>> <Указанное время ожидания истекает. </ul>

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

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

Если указанное время ожидания истекает, возвращается значение false . Если время меньше нуля или равно нулю, метод не будет ждать вообще. Все разрешения, которые должны были быть назначены этому потоку, вместо этого назначаются другим потокам, пытающимся получить разрешения, как если бы разрешения были предоставлены вызовом #release().

Документация по Java для java.util.concurrent.Semaphore.tryAcquire(int, long, java.util.concurrent.TimeUnit).

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

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