Parar y arrancar un thread
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.
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.
