Você está na página 1de 4

Threads

1 - Como funciona processamento paralelo


2 - O que Thread
3 - Criar uma Thread simples
public class MinhaThread implements Runnable{
String nomeThread;
int tempo;
public MinhaThread(String nomeThread,int tempo){
this.nomeThread = nomeThread;
this.tempo = tempo;
}
//Ponto de entrada da Thread mtodo abstrato vindo de Runnable
public void run(){
System.out.println("*");
try{
for(int x = 0;x<30;x++){
//Suspende a execuo da Thread por x milise
gundos
Thread.sleep(tempo);
System.out.printf("A Thread %s est contan
do : $d",this.nomeThread,x);
}
}Catch(InterruptedException ex){
System.out.println("A Thread " + nomeThread + "
foi interrompida");
}
System.out.println("A Thread " + nomeThread + " foi fina
lizada");
}
}
-----------------------------------------------------------------------------------------------------public class TesteThread(){
public static void main(String[] args){
System.out.println("Iniciando Thread principal...");
//Cria um objeto do tipo MinhaThread que ser executado em
trhead
MinhaThread mt1 = new MinhaThread("Thread #1");
//Cria a Thread a partir deste objeto
Thread thread = new Thread(mt1);
//Executa a Thread
thread.start();
for(int x = 1;x<50;x++){
System.out.println("**");
try{
//Suspende a execuo da Thread por 100 mili
segundos
Thread.sleep(100);
}Catch(InterruptedException ex){
System.out.println("A Thread principal f
oi interrompida");

}
}
System.out.println("Fim da execuo da Thread Principal");
}
3.1
4 5 6 7 -

}
- Mostrar execuo de vrias Threads
Explicar como esta Thread vai funcionar.
O que o mtodo run
Explicar o getName();
Explicar o setName();
final String getName();
A THREAD MinhaThread MELHORADA:
public class MinhaThread implements Runnable{
Thread thread;
int tempo;

public MinhaThread(String nomeThread,int tempo){


this.thread = new Thread(this,nome);
//Ou pode tambm nomear depois de criada usando thread.set
Name("nome_da_thread");
this.tempo = tempo;
thread.start();
}
//Ponto de entrada da Thread mtodo abstrato vindo de Runnable
public void run(){
System.out.println("Iniciando " + thread.getName());
try{
for(int x = 0;x<30;x++){
//Suspende a execuo da Thread por x milise
gundos
Thread.sleep(tempo);
System.out.printf("A Thread %s est contan
do : $d",thread.getName(),x);
}
}Catch(InterruptedException ex){
System.out.println("A Thread " + thread.getName(
) + " foi interrompida");
}
System.out.println("A Thread " + thread.getName() + " fo
i finalizada");
}
}
8 - A classe extendendo de Thread e no implementando Runnable.
Neste caso a classe deve SOBREPOR o mtodo run e
tambm chamar o start() para inciar a execuo da thread
A CLASSE MinhaThread agora Extendendo de Thread.
public class MinhaThread extends Thread{

private int tempo;


//Construtor padro da classe
public MinhaThread(String nomeThread,int tempo){
super(nome); // Chama a Classe Thread passando o nome co
mo parmetro
this.tempo = tempo;
start(); // Inicia a Thread
}
//Ponto de entrada da Thread mtodo abstrato vindo de Runnable
public void run(){
System.out.println("Iniciando " + super.getName());
try{
for(int x = 0;x<30;x++){
//Suspende a execuo da Thread por x milise
gundos
Thread.sleep(tempo);
System.out.printf("A Thread %s est contan
do : $d",getName(),x);
}
}Catch(InterruptedException ex){
System.out.println("A Thread " + getName() + " f
oi interrompida");
}
System.out.println("A Thread " + getName() + " foi final
izada");
}
}
9 - Determinando quando uma Thread termina - usando isAlive() no main(){}
public class TesteThread(){
public static void main(String[] args){
System.out.println("Iniciando Thread principal...");
//Cria um objeto do tipo MinhaThread que ser executado em
trhead
MinhaThread mt1 = new MinhaThread("Thread #1",200);
MinhaThread mt2 = new MinhaThread("Thread #2",400);
//Cria a Thread a partir deste objeto
Thread thread = new Thread(mt1);
Thread thread = new Thread(mt2);
//Executa a Thread
thread.start();
do{
System.out.println("**");
try{
//Suspende a execuo da Thread por 100 mili
segundos
Thread.sleep(100);
}Catch(InterruptedException ex){
System.out.println("A Thread principal f
oi interrompida");
}

}while(mt1.thread.isAlive() || mt2.thread.isAlive());

System.out.println("Fim da execuo da Thread Principal");


}
}
10 - O mtodo Join - outra forma de esperar a Thread terminar. Join porque a trhea
d
que fez a chamada tem que esperar a thread especificada se juntar a ela.
USANDO JOIN()
public class TesteThread(){
public static void main(String[] args){
System.out.println("Iniciando Thread principal...");
//J d o Start dentro da classe *****
//Cria um objeto do tipo MinhaThread que ser executado em
trhead
MinhaThread mt1 = new MinhaThread("Thread #1",200);
MinhaThread mt2 = new MinhaThread("Thread #2",400);
try{
mt1.thread.join();
System.out.println("Thread #1 - joined");
mt2.thread.join();
System.out.println("Thread #2 - joined");
}Catch(InterruptedException ex){
System.out.println("A Thread principal foi inter
rompida");
}

System.out.println("Fim da execuo da Thread Principal");


}
}
11 - Definindo prioridades da Thread :
- MIN_PRIORITY = 1
- NORM_PRIORITY = 5
- MAX_PRIORITY = 10