Parar y arrancar un thread

Paco
25 de Marzo del 2005
Tengo un thread padre que lanza un segundo thread hijo y se encarga de comprobar que éste este vivo, sino es así lo vuelve a lanzar. En determinados momentos preciso de parar el thread hijo, para pararlo utilizo una variable de este modo:

static volatile boolean quit = true;

public void stop() {
quit = false;
}

public void run() {
while (quit) {
// código a ejecutar
}
}

Cuando el padre detecta que el hijo no esta vivo lo vuelve a lanzar de este modo:

hiloHijo = new HiloHijo ();
hiloHijo.start();

while ( true ){

if ( !hiloHijo.isAlive() ){
hiloHijo = null;
hiloHijo = new HiloHijo();
hiloHijo.start();
}

}

Mi problema es que una vez que pongo a false la variable quit para que el proceeso hijo termine normalmente, cuando el proceso padre detecta que éste no esta vivo y lo levanta de nuevo, la variable quit se mantiene a false y no se ejecuta el codigo dentro del metodo run del proceso hijo.

lasdkjf
25 de Marzo del 2005
Fácil tron!
No necesitas caracterizar la variable con volatile.
Lo que podrías hacer es poner quit = true antes del while y cada vez que llames a start() el bucle se ejecutará.