Lenguaje

ICondition.AwaitUntil(Date) Método

Definición

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.

Se aplica a