Esse post trás uma introdução
sobre threads em Java. Suas principais estruturas e exemplos básicos de
funcionamento.
Uma visão
geral dos métodos de Thread
A classe Thread do pacote Java.lang tem vários construtores.
O construtor Thread constrói um objeto Thread cujo o seu nome é o ThreadName.
public Thread
(String threadName)
Cada thread é
colocada no método run. O programa dispara a a thread com o método start. O
método dispara uma InterruptedException se a thread que ele está tentando
iniciar já tiver sido iniciada.
O método
static sleep especifica quanto tempo a thread deve “dormir” em milissegundos.
O método
interrupt é chamado para interromper uma thread.
O método
setName configura o nome de uma thread.
Vale lembrar
que todo aplicativo Java é multithread. Cada nova thread herda a prioridade da
thread que a cria.
Exemplo de
um programa em Java
/**
* Mostra múltiplas threads imprimindo a intervalos de tempo aleatórios
*/
public class ThreadTester{
//cria e inicia as threads
public static void main(String args []){
PrintThread
thread1, thread2,
thread3, thread4;
//cria 4 objetos print
thread
thread1
= new PrintThread("Thread1");
thread2 = new PrintThread("Thread2");
thread3
= new PrintThread("Thread3");
thread4
= new PrintThread("Thread4");
System.err.println( "\nIniciando as
threads" );
//comeca a executar as printThreads
thread1.start();
thread2.start();
thread3.start();
thread4.start();
System.err.println ("Threads
terminadas\n");
}// fim da classe ThreadTester
}
/**
* Cada objeto desta classe escolhe um intervalo de adomormecimento aleatorio
* quando uma printthread e executada, ela imprime o nome, adormece,
* imprime o nome novamente e termina.
*/
class PrintThread extends Thread {
private int sleepTime;
/**
* O construtor PrintThread atribui o nome a thread
* chamando o construtor da super classe Thread
*/
public PrintThread (String nome)
{
super (nome);
//adormece durante 0 a5 segundos
sleepTime = (int)
(Math.random() * 5000);
//exibe
o nome e o sleepTime
System.err.println("Nome: " + getName() + "; sleep: " + sleepTime);
}
//controla
a execucao da thread
public void run(){
//faz
a thread adormecer durante um intervalo de tempo aleatorio
try{
System.err.println(getName()+ "going to sleep" );
//faz a thread adormecer
Thread.sleep(sleepTime);
}
//
se a thread interrompeu enquanto estava adormecida,
//
captura excecao e exibe mensagem de erro
catch (InterruptedException interruptedException)
{
System.err.println(interruptedException.toString());
}
// imprime o nome da thread
System.err.println (getName() + "Done Sleeping");
}
}// fim da classe printthread
Bibliografia
[1] Livro Java
– Como Programar: H.M. Deitel e P`.J. Deitel 4ª edição Editora Bookman
[2] Notas da
aula de Laboratório de Sistemas Operacionais – PUCMINAS – professor Julio Cesar
Dillinger Conway
Comentários