Compartir a través de


Semaphore.TryAcquire Método

Definición

Sobrecargas

TryAcquire()

Adquiere un permiso de este semáforo, solo si hay uno disponible en el momento de la invocación.

TryAcquire(Int32)

Adquiere el número determinado de permisos de este semáforo, solo si todos están disponibles en el momento de la invocación.

TryAcquire(Int64, TimeUnit)

Adquiere un permiso de este semáforo, si uno está disponible dentro del tiempo de espera dado y el subproceso actual no se ha interrumpido la interrupción de Thread#.

TryAcquire(Int32, Int64, TimeUnit)

Adquiere el número determinado de permisos de este semáforo, si todos están disponibles en el tiempo de espera especificado y el subproceso actual no se ha interrumpido la interrupción de Thread#.

TryAcquire()

Adquiere un permiso de este semáforo, solo si hay uno disponible en el momento de la invocación.

[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

Devoluciones

true si se adquirió un permiso y false , de lo contrario,

Atributos

Comentarios

Adquiere un permiso de este semáforo, solo si hay uno disponible en el momento de la invocación.

Adquiere un permiso, si uno está disponible y devuelve inmediatamente, con el valor true, lo que reduce el número de permisos disponibles por uno.

Si no hay permiso disponible, este método devolverá inmediatamente con el valor false.

Incluso cuando este semáforo se ha establecido para usar una directiva de ordenación justa, una llamada a tryAcquire()<em>will</em> adquiere inmediatamente un permiso si está disponible, independientemente de si hay o no otros subprocesos en espera. Este " barging" el comportamiento puede ser útil en determinadas circunstancias, aunque rompa la equidad. Si desea respetar la configuración de equidad, use #tryAcquire(long, TimeUnit) tryAcquire(0, TimeUnit.SECONDS) que es casi equivalente (también detecta interrupciones).

Documentación de Java para java.util.concurrent.Semaphore.tryAcquire().

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Se aplica a

TryAcquire(Int32)

Adquiere el número determinado de permisos de este semáforo, solo si todos están disponibles en el momento de la invocación.

[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

Parámetros

permits
Int32

el número de permisos para adquirir

Devoluciones

true si se adquirieron los permisos y false , de lo contrario,

Atributos

Excepciones

si permits es negativo

Comentarios

Adquiere el número determinado de permisos de este semáforo, solo si todos están disponibles en el momento de la invocación.

Adquiere el número determinado de permisos, si están disponibles, y devuelve inmediatamente, con el valor true, reduciendo el número de permisos disponibles por la cantidad especificada.

Si no hay permisos suficientes disponibles, este método devolverá inmediatamente con el valor false y el número de permisos disponibles no se modifica.

Incluso cuando este semáforo se ha establecido para usar una directiva de ordenación justa, una llamada a tryAcquire<em>will</em> adquiere inmediatamente un permiso si está disponible, independientemente de si hay o no otros subprocesos en espera. Este " barging" el comportamiento puede ser útil en determinadas circunstancias, aunque rompa la equidad. Si desea respetar la configuración de equidad, use #tryAcquire(int, long, TimeUnit) tryAcquire(permits, 0, TimeUnit.SECONDS) que es casi equivalente (también detecta interrupciones).

Documentación de Java para java.util.concurrent.Semaphore.tryAcquire(int).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Se aplica a

TryAcquire(Int64, TimeUnit)

Adquiere un permiso de este semáforo, si uno está disponible dentro del tiempo de espera dado y el subproceso actual no se ha interrumpido la interrupción de Thread#.

[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

Parámetros

timeout
Int64

tiempo máximo para esperar un permiso

unit
TimeUnit

la unidad de tiempo del timeout argumento

Devoluciones

true si se adquirió un permiso y false si el tiempo de espera transcurrido antes de adquirir un permiso

Atributos

Excepciones

si se interrumpe el subproceso actual

Comentarios

Adquiere un permiso de este semáforo, si uno está disponible dentro del tiempo de espera dado y el subproceso actual no se ha interrumpido la interrupción de Thread#.

Adquiere un permiso, si uno está disponible y devuelve inmediatamente, con el valor true, lo que reduce el número de permisos disponibles por uno.

Si no hay permiso disponible, el subproceso actual se deshabilita con fines de programación de subprocesos y permanece inactivo hasta que se produce una de las tres cosas: <ul><li>Otros subprocesos invocan el #release método para este semáforo y el subproceso actual está junto a asignar un permiso; o <li>Otros subprocesos Thread#interrupt interrumpen el subproceso actual; o <li>El tiempo de espera especificado transcurre. </ul>

Si se adquiere un permiso, se devuelve el valor true .

Si el subproceso actual: <ul<>li>tiene su estado interrumpido establecido en la entrada a este método; o <li>es Thread#interrupt interrumpida mientras espera adquirir un permiso, </ul> se InterruptedException produce y se borra el estado interrumpido del subproceso actual.

Si transcurre el tiempo de espera especificado, se devuelve el valor false . Si el tiempo es menor o igual que cero, el método no esperará en absoluto.

Documentación de Java para java.util.concurrent.Semaphore.tryAcquire(long, java.util.concurrent.TimeUnit).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Se aplica a

TryAcquire(Int32, Int64, TimeUnit)

Adquiere el número determinado de permisos de este semáforo, si todos están disponibles en el tiempo de espera especificado y el subproceso actual no se ha interrumpido la interrupción de Thread#.

[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

Parámetros

permits
Int32

el número de permisos para adquirir

timeout
Int64

el tiempo máximo de espera de los permisos

unit
TimeUnit

la unidad de tiempo del timeout argumento

Devoluciones

true si se adquirieron todos los permisos y false si el tiempo de espera transcurrido antes de que se adquirieran todos los permisos

Atributos

Excepciones

si se interrumpe el subproceso actual

si permits es negativo

Comentarios

Adquiere el número determinado de permisos de este semáforo, si todos están disponibles en el tiempo de espera especificado y el subproceso actual no se ha interrumpido la interrupción de Thread#.

Adquiere el número determinado de permisos, si están disponibles y devuelven inmediatamente, con el valor true, reduciendo el número de permisos disponibles por la cantidad especificada.

Si los permisos insuficientes están disponibles, el subproceso actual se deshabilita con fines de programación de subprocesos y permanece inactivo hasta que se produce una de las tres cosas: <ul<>li Li>Otros subprocesos invoca uno de los #release() release métodos para este semáforo y el subproceso actual está junto a permisos asignados y el número de permisos disponibles satisface esta solicitud; o <li>Otros subprocesos Thread#interrupt interrumpen el subproceso actual; o <li li>El tiempo de espera especificado transcurre. </ul>

Si se adquieren los permisos, se devuelve el valor true .

Si el subproceso actual: <ul><li>tiene su estado interrumpido establecido en la entrada a este método; o <li>es Thread#interrupt interrumpida mientras espera adquirir los permisos, </ul InterruptedException> se produce y se borra el estado interrumpido del subproceso actual. Los permisos que se asignaron a este subproceso se asignan en su lugar a otros subprocesos que intentan adquirir permisos, como si los permisos se hubieran puesto a disposición mediante una llamada a #release().

Si transcurre el tiempo de espera especificado, se devuelve el valor false . Si el tiempo es menor o igual que cero, el método no esperará en absoluto. Los permisos que se asignaron a este subproceso se asignan en su lugar a otros subprocesos que intentan adquirir permisos, como si los permisos se hubieran puesto a disposición mediante una llamada a #release().

Documentación de Java para java.util.concurrent.Semaphore.tryAcquire(int, long, java.util.concurrent.TimeUnit).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Se aplica a