Hilos de Java

Estoy haciendo el space invaders. Tengo un montón de hilos por ahí pululando pero no se como matarlos a no ser con el stop(), que me desaconsejan todos los manuales.
Me puedes echar una mano.

1 Respuesta

Respuesta
1
Como bien dices todos los manuales desaconsejan tanto stop() como resume()... el problema parece ser por casos de deadlock o abrazo mortal... la solución, creo yo, sería que pusieses en el método run() de estos hilos una condición que hiciera que salieran del bucle infinito que supongo que tienes puesto para que se ejecuten continuamente; por ejemplo, esos hilos podrían tener una variable booleana que tú pudieras cambiar, de modo que cuando quisieras que se parasen llamarías a un método para que esa variable tomara el valor que tú hubieras puesto para salir del run()... no sé si me he explicado, más o menos el código quedaría así...
public void setSalir(boolean salir){
this.salir=salir;
}
public void run(){
while(!salir){
doSomething();
}
}
Es decir, cuando tú quieras que se salga del run() (es decir, que muera el hilo), tú llamas a setSalir(true) sobre ese objeto hilo, y de este modo se saldría del run() y el garbage collector eliminaría el hilo. A lo mejor no puedes tú misma acceder a esos hilos, con lo que tendrías que tener alguna condición dentro del método run() para que se saliera y así terminar o "matar" su ejecución. Espero haber sido claro aunque creo que me he liado un poco... si la que estás liada eres tú, o no te funciona esta solución, no dudes en escribirme.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas