Tengo varios hilos de consumo esperando en un CountDownLatch
del tamaño 1 usando await()
. Tengo un solo hilo productor que llama al countDown()
cuando termina con éxito.¿Cómo puedo "cancelar" un CountDownLatch?
Esto funciona muy bien cuando no hay errores.
Sin embargo, si el productor detecta un error, me gustaría que pueda señalar el error a los hilos del consumidor. Idealmente, podría hacer que el productor llame al abortCountDown()
y que todos los consumidores reciban una excepción interrumpida u otra excepción. No deseo llamar al countDown()
, porque esto requiere que todos mis hilos de consumo realicen una verificación manual adicional para verificar el éxito después de llamar al await()
. Prefiero que reciban una excepción, que ya saben cómo manejar.
Sé que una instalación de aborto no está disponible en CountDownLatch
. ¿Existe otra primitiva de sincronización que pueda adaptar fácilmente para crear efectivamente un CountDownLatch
que admita abortar la cuenta atrás?
Cómo utilizar esta clase, Mi situación es Tengo una lista y la lista se actualiza dinámicamente en tiempo real. Hay una lista de eventos automáticos en la que tengo que esperar 2 minutos, pero si entre el tiempo de espera el evento del Manual del Usuario entra en la lista, tengo que interrumpir la espera y proceder de inmediato. –