miércoles, 16 de abril de 2014

Finalizar un Thread

Un thread finaliza cuando el método run() devuelve el control, por haber terminado lo que tenía que hacer (por ejemplo, un bucle for que se ejecuta IUI número determinado de veces) o por haberse dejado de cumplir una condición (por ejemplo, por un bucle n-hile en el método run(f). Es habitual poner las siguientes sentencias en el caso de Applets Runnables:

public class MyApplet extends Applet implements Runnable {
// se crea una referencia tipo Thread
private Thread AppletThread;
// método start() del Applet
public void start() {
if(AppletThread == nuil){            // si no tiene un objeto Thread asociado
AppletThread = new Thread(this, "El propio Applet");
AppletThread.start();                // se arranca el thread y llama a run()
}
}
// método stop() del Applet
public void stop() {
AppletThread = nuil;                 // iguala la referencia a nuil
}
// método run() por implementar Runnable
public void run() {
Thread myThread = Thread.currentThread();
while (myThread == AppletThread) { // hasta que se ejecute stop() de Thread
...                               // código a ejecutar
}
}
} // fin de la clase MyApplet

donde AppletThread es el thread que ejecuta el método runQ MyApplet. Para finalizar el thread basta poner la referencia AppletThread a nuil. Esto se consigue en el ejemplo con el método stopf) del applet (distinto del método stopf) de la clase Thread. que no conviene utilizar). Para saber si un thread está '"vivo" o no. es útil el método isAlivef) de la clase Thread. que devuelve true si el thread ha sido inicializado y no parado, y false si el thread es todavía nuevo (no ha sido inicializado) o ha finalizado.

No hay comentarios:

Publicar un comentario