Curso de Verão de Java



Usando threads em applets

Até agora nós vimos como trabalhar com threads criados a partir da classe Thread ou de uma classe que herde da classe Thread. Sabemos que esta classe provê os métodos básicos para se lidar com threads (run(), start(), stop(), sleep(), etc.).

Suponha que você queira, agora, implementar um thread dentro de um applet. Por exemplo, suponha que você quer fazer um applet como este relógio


que atualiza o seu display a cada segundo. A classe que vai implementar o seu relógio precisa ser uma subclasse da classe Applet para herdar todas as facilidades oferecidas por ela. Como fazê-la, então, herdar também da classe Thread?

Qualquer objeto que implemente a interface Runnable pode utilizar o seu método run() para ser executado como um thread.

	class Clock extends Applet implements Runnable {
		...
	}
O applet Clock precisa, agora, criar a sua própria thread. Isto é feito no seu método start()
	public void start() {
    	    if (clockThread == null) {
	       	clockThread = new Thread(this, "Clock");
       	 	clockThread.start();
   	    }
    	}
Observe a chamada ao construtor Thread(this,"Clock")...
O construtor precisa receber como primeiro argumento um objeto que implemente a interface Runnable; este objeto é que vai fornecer o método run() do thread clockThread.
	public void run() {
    	    while (clockThread != null) {
                repaint();
                try {
               	    clockThread.sleep(1000);
                } catch (InterruptedException e){
                }
    	    }
	}   
No método stop() do Applet Clock, temos que chamar também o método stop() do Thread clockThread, caso contrário, o thread vai continuar executando e consumindo recursos mesmo depois que sairmos da pagina do applet .
public void stop() {
    clockThread.stop();
    clockThread = null;
}
Se você revisitar a página, o start() do Applet Clock é chamado novamente e um novo thread é inicializado.

Aqui está o código completo do Applet Clock



Andreia A. Alcântara, aaa@di.ufpe.br
Última edição em 22 de janeiro de 1996.
URL: http://www.di.ufpe.br/~java/verao/aula8/usando.html