Foros del Web » Programación para mayores de 30 ;) » Java »

Terminación de hilos antes de terminar su ejecución

Estas en el tema de Terminación de hilos antes de terminar su ejecución en el foro de Java en Foros del Web. Buenos días: Tengo un programa de cálculo que distribuye tareas en uno o varios hilos. Actualmente lo tengo hecho mediante threads que se incluyen en ...
  #1 (permalink)  
Antiguo 01/10/2010, 01:00
 
Fecha de Ingreso: marzo-2008
Mensajes: 22
Antigüedad: 16 años, 8 meses
Puntos: 1
Terminación de hilos antes de terminar su ejecución

Buenos días:

Tengo un programa de cálculo que distribuye tareas en uno o varios hilos. Actualmente lo tengo hecho mediante threads que se incluyen en un array y cuando uno de los threads termina, por hallar una solución válida, recorro el array y cambio el valor de un semáforo para que el resto terminen también.

Originariamente quería utilizar un ExecutorService definido como Executors.newFixedThreadPool() lo que pasa es que no he sabido cómo realizar este corte "en cualquier momento". Algo he leido sobre la posibilidad de identificar un determinado hilo de ese ExecutorService utilizando el método submit en vez del execute. Si esto es así supongo que de alguna manera se podría identificar todos los hilos creados para un mismo cálculo y terminarlos sin afectar a otros que pudiesen estar realizando otro cálculo o tarea.

Si alguien me puede dar una idea sobre cómo realizar esto le estaría muy agradecido.

Un saludo.
  #2 (permalink)  
Antiguo 01/10/2010, 04:17
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 1 mes
Puntos: 51
Respuesta: Terminación de hilos antes de terminar su ejecución

La solución sería más sencilla si lo haces al reves. Lo mejor es que los Threads que estan realizando tareas miren periodicamente si han de terminar por que ya se resolvio el tema y si es el caso salgan por si mismos, en vez de tu notificarlos externamente.

Si estas pensando en cortar los threads en cuanto se acaba la tarea (por lo de "en cualquier momento"), olvidate. Parar Threads bruscamente está totalmente desrecomendado y puede dejar la JVM en un estado indeterminado. Por eso los métodos stop() y destroy() de los Threads están deprecated. Es mucho mejor que comprueben una condicion de salida, en cada vuelta de un bucle o mini-tarea que hagan, y si se les avisa, salgan ellos mismos cerrando adecuadamente todo lo que haya que cerrar y dejando el Thread de la JVM en buen estado.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.

Etiquetas: hilos, terminar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:09.