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 в противном случае
- Атрибуты
Исключения
Значение
Комментарии
Получает заданное количество разрешений из этого семафора, только если все доступны во время вызова.
Получает заданное число разрешений, если они доступны, и возвращается немедленно, при этом уменьшается 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 . Если время меньше нуля или равно нулю, метод не будет ждать вообще.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом 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 если время ожидания истекло до получения всех разрешений
- Атрибуты
Исключения
Если текущий поток прерван
Значение
Комментарии
Получает заданное количество разрешений из этого семафора, если все становятся доступными в течение заданного времени ожидания, и текущий поток не был прерван потоком#прерывания.
Получает заданное число разрешений, если они доступны и возвращаются немедленно, при этом значение trueуменьшает количество доступных разрешений по заданному количеству.
Если недостаточно разрешений доступны, текущий поток становится отключенным для целей планирования потоков и находится в неактивном состоянии до тех пор, пока не произойдет одно из трех вещей: <ul><li Некоторый другой поток вызывает один из #release() release методов для этого семафора, а текущий поток рядом с разрешениями и число доступных разрешений удовлетворяет этому запросу; или <ли другой поток#прерывания прерывает текущий поток; или li>>> <Указанное время ожидания истекает. </ul>
Если разрешения получены, возвращается значение true .
Если текущий поток: <ul><li>имеет его прерванное состояние при входе в этот метод; или <li>является Thread#прерывание при ожидании получения разрешений, /ul> затем InterruptedException возникает, <а состояние прерывания текущего потока очищается. Все разрешения, которые должны были быть назначены этому потоку, вместо этого назначаются другим потокам, пытающимся получить разрешения, как если бы разрешения были предоставлены вызовом #release().
Если указанное время ожидания истекает, возвращается значение false . Если время меньше нуля или равно нулю, метод не будет ждать вообще. Все разрешения, которые должны были быть назначены этому потоку, вместо этого назначаются другим потокам, пытающимся получить разрешения, как если бы разрешения были предоставлены вызовом #release().
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.