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
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")...
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