Comenzó varios subprocesos de trabajo, necesita notificarlos para detenerse. Debido a que algunos de los hilos dormirán por un tiempo antes de la próxima ronda de trabajo, necesitan una forma que pueda notificarlos incluso cuando estén durmiendo.¿Mejor manera de indicar que otro hilo se detenga?
Si fuera la programación de Windows, podría usar las funciones de Evento y de espera. En Java que estoy haciendo esto mediante el uso de un objeto CountDownLatch que cuentan: 1. funciona, pero no se siente elegante, sobre todo tengo que comprobar el valor de recuento para ver si necesidad de salir:
run(){
while(countDownLatch.count()>0){
//working
// ...
countDownLatch.wait(60,TimeUnit.SECONDS);
}
}
semáforo es otro elección, pero tampoco se siente muy bien. Me pregunto si hay alguna forma mejor de hacer esto. Gracias.
Esto no es exactamente la respuesta que está buscando, pero debería utilizar los grupos de subprocesos (java.util.concurrent). Estoy casi seguro de que pueden hacer lo que quieres y están libres de errores y puedes usar tu tiempo para desarrollar otras cosas. – toto2
¿Desea detener todos los hilos, o solo quiere detener unos pocos? – Moonbeam
@Moonbeam Necesito detenerlos individualmente, por lo que la agrupación de subprocesos no parece ser una solución viable. – HourseArmor