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;
private Thread AppletThread;
// método
start() del Applet
public void start() {
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() {
public void stop() {
AppletThread = nuil; //
iguala la referencia a nuil
}
// método
run() por implementar Runnable
public void run() {
public void run() {
Thread myThread =
Thread.currentThread();
while (myThread == AppletThread) { // hasta que se
ejecute stop() de Thread
... // código a ejecutar
... // 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