Estoy trabajando en los ejecutores en Java para ejecutar simultáneamente más hilos a la vez. Tengo un conjunto de Objetos Ejecutables y lo asigno a los Exceutors. El Ejecutor está trabajando bien y todo está bien. Pero después de que todas las tareas se ejecutan en el grupo, el programa Java no se termina, creo que el Ejecutor toma algo de tiempo matar los hilos. Por favor, que alguien me ayude a reducir el tiempo empleado por el ejecutor después de ejecutar todas las tareas.Cómo detener la ejecución de Execution ThreadPool en java?
Respuesta
La clase ExecutorService tiene 2 métodos solo para esto: shutdown() y shutdownNow().
Después de usar el método shutdown(), puede llamar al awaitTermination() para bloquear hasta que se hayan completado todas las tareas iniciadas. Incluso puede proporcionar un tiempo de espera para evitar esperar para siempre.
Es posible que desee hacer clic en algunos de estos enlaces que estoy proporcionando. Van directamente a los documentos donde usted puede leer estas cosas usted mismo.
executor.shutdown() con awaitTermination (tiempo de espera) no mata los hilos. (es decir), si su tarea ejecutable se encuentra dentro de un ciclo de sondeo, no mata la tarea. Todo lo que hace es interrumpir sus tareas ejecutables cuando se alcanza el tiempo de espera. Por lo tanto, en el código de su clase ejecutable, si se espera de alguna condición, es posible que desee cambiar la condición de que,
while (flagcondition && !Thread.currentThread().isInterrupted()) {}
Esto asegura que se detiene la tarea cuando el hilo se interrumpe en el bucle while termina. Alternativamente, es posible que desee capturar la excepción interrumpida y establecer flag = false en el bloque catch para finalizar el hilo.
try {
// do some stuff and perform a wait that might throw an InterruptedException
} catch (InterruptedException e) {
flagcondition = false;
}
Es posible que también desee utilizar un generador de perfiles para examinar por qué algunos subprocesos no se han completado.
- 1. Cómo detener la ejecución de un ciclo en Java
- 2. Uso de Java ThreadPool
- 3. Cómo detener la ejecución en ActionScript
- 4. ¿Cómo detener la ejecución de servicios?
- 5. Detener la ejecución de compilación en Jenkins
- 6. Detener programáticamente la ejecución de JavaScript en Firebug
- 7. ¿Cómo detener la ejecución del código VBA?
- 8. ¿Cómo detener la ejecución del selector?
- 9. Oracle Execution Plan
- 10. Cómo detener la ejecución de enlaces knockout.js en elementos secundarios
- 11. Detener o finalizar la consulta de larga ejecución en JDBC
- 12. Detener la ejecución del script de Ruby
- 13. ¿Cómo detener la ejecución después de un cierto tiempo en Java?
- 14. Parallel.ForEach Ordered Execution
- 15. ¿Podemos detener la ejecución de un constructor?
- 16. ¿Qué ThreadPool en Java debería usar?
- 17. Búsqueda de Java Asíncrono genérico Job Execution Framework/Library
- 18. ¿Cómo detener la ejecución del programa Java desde la línea de comandos?
- 19. Cómo utilizar la clase ThreadPool
- 20. Cómo detener una consulta de mysql en ejecución
- 21. ¿Lanzar una excepción sin detener la ejecución?
- 22. Método de ejecución C# (con parámetros) con ThreadPool
- 23. ¿Cómo depurar un threadpool en Visual Studio?
- 24. ¿Es posible detener la ejecución de una función dentro de un tiempo especificado en Java?
- 25. GDB cómo detener la ejecución sin un punto de interrupción?
- 26. ¿cómo detengo la ejecución en una secuencia de comandos python?
- 27. cómo detener una secuencia de comandos en ejecución en Matlab
- 28. Eclipse Perl Remote Execution
- 29. ¿Cómo podemos detener un proceso java en ejecución a través de cmd de Windows?
- 30. ¿Cómo detener la ejecución de un procedimiento almacenado utilizando SQL Server?
Cómo puedo asegurar que todas las tareas están comprometidas, necesito todas las tareas deben confirmar su ejecución – Rajapandian
@Rajapandian La definición de apagado es que espera a que se completen todas las tareas, pero no permite que comiencen las nuevas. ¿Cómo no hace eso lo que quieres? –
por favor alguien me diga por qué mi programa java toma tiempo para detener la ejecución incluso después de que el ejecutor termine toda su tarea. – Rajapandian