Un Hilo es un flujo de ejecución, con un
comienzo y un fin, de una tarea. Todos los programas manejan un hilo y la
ejecución depende de las condiciones en las que fue diseñado.
Cuando se ejecuta un applet, es deseable, ver
como va el avance del proceso o como se desempeña un algoritmo en su ejecución.
Dado que Java realiza la tarea de ejecución de este hilo, solo presentará
algunos resultados. Normalmente en la ejecución, de un applet veremos el inicio
y fin.
Una alternativa es crear nuestro propio hilo
para realizar la ejecución de nuestro applet. La clase Thread, permite crear
nuestros propios hilos y así controlar el flujo de ejecución.
La clase Thread, contiene los siguientes
métodos para controlar la ejecución.
public void run()
Este método es
invocado a tiempo de ejecución. Uno puede sobre escribir este método y proveer
el código que uno quiere que se ejecute al correr el hilo.
public void start()
Arranca el hilo, lo cual provoca que el
método run() sea invocado.
public
void stop()
Detiene la ejecución de un hilo.
public
void resume()
Reanuda la ejecución de un hilo.
public
static void sleep(long t)
Detiene temporalmente la ejecución de un hilo
un tiempo dado por la variable t, en milisegundos.
public
void interrupt()
Interrumpe la ejecución de un hilo.
public
static boolean isInterrupted()
Prueba si el hilo en ejecución ha sido
interrumpido.
public
boolean isAlive()
Prueba si un hilo esta corriendo.
public
void setPriority(int p)
Asigna prioridad p a un hilo.
Ejemplo 1.
El siguiente código muestra a un texto moviéndose a lo largo de la pantalla
(ver ejecución).
import
java.awt.*;
import
java.awt.event.*;
import
java.applet.*;
public class
Applet2 extends Applet implements Runnable
{
Thread hilo = null;
int x, y;
public void init()
{
x = 10;
y = 100;
}
public void start()
{
if(hilo == null)
{
hilo = new Thread(this);
hilo.start();
}
}
public void paint(Graphics g)
{
//start();
g.drawString("Hola Mundo", x,
y);
}
public void run()
{
principal();
hilo.interrupt();
hilo = null;
}
//
**************************************************************************
void pausa(int m) {
repaint();
try {
Thread.sleep(m);
}
catch (InterruptedException e) {}
;
}
//
**************************************************************************
void principal()
{
for(int i=0; i< 100; i++)
{
x = x + i;
repaint();
pausa(300);
}
}
}
Ejemplo 2.
El siguiente código de Java muestra la
ejecución de un hilo. Este hilo fue diseñado para mostrar como se modifica las
curva y=2x-2 y z = m, donde m es una variable. (ver ejecución)
import java.awt.*;
import
java.awt.event.*;
import
java.applet.*;
public class
Applet1 extends Applet implements Runnable
{
Thread hilo = null;
grafica g;
public void init()
{
g = null;
}
public void start()
{
if(hilo == null)
{
hilo = new Thread(this);
hilo.start();
}
}
public void paint(Graphics g)
{
start();
g.drawString("dibujando",
100,100);
}
public void run()
{
principal();
hilo.interrupt();
hilo = null;
}
//
**************************************************************************
void pausa(int m) {
repaint();
try {
Thread.sleep(m);
}
catch (InterruptedException e) {}
;
}
// **************************************************************************
void principal()
{
double x[] = new double[10];
double y[] = new double[10];
double z[] = new double[10];
double m = 0;
for(int it=0; it<10; it++)
{
g = new grafica("salida");
for(int i=0; i<10; i++)
{
x[i] = i;
y[i] = 2*x[i] - 2;
z[i] = m;
}
m += 1;
g.SerieX(x);
g.SerieY(y);
g.SerieX(z);
g.SerieY(x);
g.show();
pausa(300);
g.dispose();
}
}
}