esperando la finalización del subproceso con EjecutorService
Al ejecutar múltiples tareas utilizando simultáneamente un servicio de ejecución, se vuelve crucial manejar las notificaciones de finalización de manera efectiva. Este artículo explora el mejor enfoque para esperar a que todos los hilos terminen sin confiar en los bucles infinitos.
Como se describe en el problema, un bucle infinito no se considera una solución óptima. En su lugar, EjecutorService proporciona un mecanismo incorporado para administrar la finalización de la tarea: shutdown () y awaitmination () métodos.
usando shutdown () y await termination ()
la interfaz EjecutorService ofrece el método de cierre () que señala el servicio ejecutor ya no acepta a las tareas newekdown. Una vez que se hayan completado todas las tareas presentadas actualmente, el servicio de ejecutor finalizará.
para esperar la finalización de la tarea, se emplea el método AwaitTermination (). Este método toma dos parámetros:
en el ejemplo proporcionado en el Código, el código se puede modificar como sigue:
[&] [&] ejecutor de ejecutor TAUKE Ejecutores.newFixedThreadPool (4); mientras(...) { taskexecutor.execute (nuevo mytask ()); } taskexecutor.shutdown (); intentar { taskexecutor.await termination (long.max_value, timeunit.nanoseconds); } capt (interruptedException e) { ... }ExecutorService taskExecutor = Executors.newFixedThreadPool(4); while(...) { taskExecutor.execute(new MyTask()); } taskExecutor.shutdown(); try { taskExecutor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS); } catch (InterruptedException e) { ... }el tiempo de espera long.max_value asegura que el método AwaitTermination () bloquee hasta que todas las tareas estén completadas. Si la finalización de la tarea es sensible al tiempo, se puede especificar un tiempo de espera finito.
Conclusion
utilizando los métodos de cierre () y AgaitTermination () proporciona una forma confiable y eficiente de esperar a que todos los hilos terminen sin recurrir a loops infinitos. Este enfoque simplifica la gestión de tareas y garantiza la finalización del hilo de manera controlada.Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3