O diagrama abaixo mostra os estados nos quais um thread de Java pode estar e
alguns métodos que podem ser usados para mudar de um estado para outro.
New Thread
class MyThreadClass extends Thread{
...
}
...
MyThreadClass myThread = new MyThreadClass();
Neste estado, nenhum recurso do sistema foi alocado para o thread ainda,
assim, a partir daqui, tudo que você pode fazer é um
start(), para ativar o thread, ou um stop(), para
"matá-lo". A chamada de qualquer outro método não faz sentido e
levantará a exceção IllegalThreadStateException.
Runnable
Thread myThread = new MyThreadClass();
myThread.start();
Falamos em "Runnable", ao invés de "Running", porque o thread pode não
estar realmente sendo executado. Imagine um computador com um único
processador - seria impossível executar todos os threads "Runnable" ao mesmo
tempo. O que ocorre é que a CPU deve ser escalonada entre os vários threads.
Not Runnable
O exemplo abaixo coloca o applet myThread para dormir por 10 segundos...
Thread myThread = new MyThreadClass();
myThread.start();
try {
myThread.sleep(10000);
} catch (InterruptedException e){
}
Cada uma destas maneiras tem a sua forma específica de sair do estado
"Not Runnable".
Dead
Thread myThread = new MyThreadClass();
myThread.start();
public void run() {
int i = 0;
while (i < 100) {
i++;
System.out.println("i = " + i);
}
}
Thread myThread = new MyThreadClass();
myThread.start();
try {
Thread.currentThread().sleep(10000);
} catch (InterruptedException e){
}
myThread.stop();
O método yield()
Andreia A. Alcântara, aaa@di.ufpe.br