ICondition.AwaitUntil(Date) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Hace que el subproceso actual espere hasta que se señale o se interrumpa, o bien la fecha límite especificada transcurre.
[Android.Runtime.Register("awaitUntil", "(Ljava/util/Date;)Z", "GetAwaitUntil_Ljava_util_Date_Handler:Java.Util.Concurrent.Locks.IConditionInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")]
public bool AwaitUntil(Java.Util.Date? deadline);
[<Android.Runtime.Register("awaitUntil", "(Ljava/util/Date;)Z", "GetAwaitUntil_Ljava_util_Date_Handler:Java.Util.Concurrent.Locks.IConditionInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")>]
abstract member AwaitUntil : Java.Util.Date -> bool
Parámetros
- deadline
- Date
el tiempo absoluto que se va a esperar hasta
Devoluciones
false si la fecha límite ha transcurrido tras la devolución, de lo contrario true
- Atributos
Excepciones
si se interrumpe el subproceso actual (y se admite la interrupción de la suspensión del subproceso)
Comentarios
Hace que el subproceso actual espere hasta que se señale o se interrumpa, o bien la fecha límite especificada transcurre.
El bloqueo asociado a esta condición se libera de forma atómica y el subproceso actual se deshabilita con fines de programación de subprocesos y permanece inactivo hasta <que se produzcan cinco><> cosas: <ul><li>Otros subprocesos invocan el #signal método para esto Condition y el subproceso actual se elige como subproceso que se va a despertar; o <li>Otros subprocesos invocan el #signalAll método para este Condition; o li<>Otros subprocesos Thread#interrupt interrumpen el subproceso actual y se admite la interrupción de la suspensión del subproceso; o <li>La fecha límite especificada transcurre; o <li>A "<em>espurios wakeup</em>" se produce.
</ul>
En todos los casos, antes de que este método pueda devolver el subproceso actual debe volver a adquirir el bloqueo asociado a esta condición. Cuando el subproceso devuelve, se <>garantiza</em> para mantener este bloqueo.
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 se admite la espera e interrupción de la suspensión del subproceso, >se produce /ul <> y se borra el estado interrumpido del subproceso actual.<>InterruptedException No se especifica, en el primer caso, si se produce o no la prueba de interrupción antes de que se libere el bloqueo.
El valor devuelto indica si ha transcurrido la fecha límite, que se puede usar de la siguiente manera:
{@code
boolean aMethod(Date deadline)
throws InterruptedException {
boolean stillWaiting = true;
lock.lock();
try {
while (!conditionBeingWaitedFor()) {
if (!stillWaiting)
return false;
stillWaiting = theCondition.awaitUntil(deadline);
}
// ...
return true;
} finally {
lock.unlock();
}
}}
<b>Consideraciones de< implementación/b>
Se supone que el subproceso actual contiene el bloqueo asociado a este Condition cuando se llama a este método. Es necesario que la implementación determine si este es el caso y, si no es así, cómo responder. Normalmente, se producirá una excepción (como IllegalMonitorStateException) y la implementación debe documentar ese hecho.
Una implementación puede favorecer la respuesta a una interrupción sobre el retorno del método normal en respuesta a una señal, o bien una superación que indica el paso de la fecha límite especificada. En cualquier caso, la implementación debe asegurarse de que la señal se redirige a otro subproceso en espera, si hay uno.
Java documentación para java.util.concurrent.locks.Condition.awaitUntil(java.util.Date).
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.