Red de conocimiento informático - Computadora portátil - ¿Para qué se utiliza el bloqueo de cuenta regresiva?

¿Para qué se utiliza el bloqueo de cuenta regresiva?

CountDownLatch

1. Descripción de la clase

Esta es una clase auxiliar de sincronización que permite que uno o más subprocesos esperen a que otros subprocesos realicen un conjunto de operaciones. para completar. CountDownLatch se inicializa con el recuento dado y, dado que se llama al método countDown(), el método de espera se bloquea hasta que el recuento actual llega a cero. Posteriormente, todos los subprocesos en espera se liberan y todas las llamadas en espera posteriores regresan inmediatamente. Esto sólo ocurre una vez y el conteo no se puede restablecer. Un subproceso (o varios subprocesos) espera a que otros N subprocesos completen una operación antes de ejecutarla

2. Escenarios de uso

En algunas aplicaciones, es necesario esperar a que se realice una operación. realizado. La siguiente operación solo se puede realizar después de que se cumpla la primera condición. Al mismo tiempo, cuando los subprocesos completen la operación, también activarán un evento para la siguiente operación. CountDownLatch se puede utilizar en este momento. Los métodos más importantes de countDownLatch son countDown () y await (). El primero cuenta principalmente una vez y el segundo espera que la cuenta regresiva llegue a 0. Si no llega a 0, solo puede bloquear y esperar.

3. Método

countDown

public void countDown()

Reduzca el recuento del pestillo. Si el recuento llega a 0, luego libere todos los hilos en espera. Si el recuento actual es mayor que cero, disminuya el recuento. Si el nuevo recuento es cero, todos los subprocesos en espera se vuelven a habilitar para la programación de subprocesos.

Si el recuento actual es igual a cero, no se produce ninguna acción.

await

espera booleana pública (¿largo?tiempo de espera,

TimeUnit?unit)

?lanza InterruptedException

Hace que el subproceso actual espere a que la cuenta regresiva del pestillo se restablezca a cero, a menos que se interrumpa el subproceso o se exceda el tiempo de espera especificado. Si el recuento actual es cero, este método devolverá inmediatamente un valor "verdadero".

Si el recuento actual es mayor que cero, el hilo actual deshabilitará la programación del hilo y permanecerá inactivo hasta que se produzca una de las siguientes tres condiciones:

Si el recuento llega a cero, este método voluntad Devuelve un valor "verdadero".

Si el hilo actual:

lanza una excepción de interrupción y borra el estado de interrupción del hilo actual. Si se excede el tiempo de espera especificado, el valor de retorno es "falso". Si el tiempo de espera es menor o igual a cero, el método no espera en absoluto.

Al ingresar a este método, el estado de interrupción del hilo se ha establecido o

Fue interrumpido mientras esperaba,

debido a que se llamó a "countDown()? " método, el recuento llega a cero o

otro hilo interrumpe el hilo actual o

se excede el tiempo de espera especificado;

Parámetros:

¿tiempo de espera? - ¿el tiempo máximo de espera?

unidad: la unidad de tiempo del parámetro "tiempo de espera".

Devuelve:

Devuelve verdadero si el recuento llega a cero; devuelve falso si el tiempo de espera transcurre antes de que el recuento llegue a cero

Lanza:

¿Excepción interrumpida?