O documento apresenta exemplos de como criar threads em Java utilizando a classe Thread diretamente e implementando a interface Runnable. Discute as vantagens de cada abordagem, sendo melhor usar Runnable quando não for necessário estender outra classe além de Thread.
2. public class MinhaThread extends Thread {
private String nome;
private int valorAdormecida;
public MinhaThread(String nome, int valorAdormecida){
this.nome = nome;
this.valorAdormecida = valorAdormecida;
start();
}
public void run(){
System.out.println(nome + "foi iniciada");
try {
for (int i=0; i<6; i++){
System.out.println(nome + " tem contador valor " + i);
Thread.sleep(valorAdormecida);
}
} catch (InterruptedException e) {
System.out.println(nome + " foi interrompida");
}
System.out.println(nome + "foi terminada");
}
public static void main(String[] args){
MinhaThread thread = new MinhaThread("Thread1", 500);
MinhaThread thread2 = new MinhaThread("Thread2", 900);
}
}
3. public class MinhaThreadRunnable implements Runnable {
private String nome;
private int valorAdormecida;
public MinhaThreadRunnable(String nome, int valorAdormecida){
this.nome = nome;
this.valorAdormecida = valorAdormecida;
//start();
}
public void run(){
System.out.println(nome + "foi iniciada");
try {
for (int i=0; i<6; i++){
System.out.println(nome + " tem contador valor " + i);
Thread.sleep(valorAdormecida);
}
} catch (InterruptedException e) {
System.out.println(nome + " foi interrompida");
}
System.out.println(nome + "foi terminada");
}
public static void main(String[] args){
MinhaThread thread = new MinhaThread("Thread1", 500);
MinhaThread thread2 = new MinhaThread("Thread2", 900);
}
}
Não precisa chamar o método start
Também é preciso implementar
o método run
4. public class MinhaThreadRunnable implements Runnable {
private String nome;
private int valorAdormecida;
public MinhaThreadRunnable(String nome, int valorAdormecida){
this.nome = nome;
this.valorAdormecida = valorAdormecida;
//start();
}
public void run(){
System.out.println(nome + "foi iniciada");
try {
for (int i=0; i<6; i++){
System.out.println(nome + " tem contador valor " + i);
Thread.sleep(valorAdormecida);
}
} catch (InterruptedException e) {
System.out.println(nome + " foi interrompida");
}
System.out.println(nome + "foi terminada");
}
public static void main(String[] args){
MinhaThread thread = new MinhaThread("Thread1", 500);
MinhaThread thread2 = new MinhaThread("Thread2", 900);
}
}
Também é preciso implementar
o método run
5. public static void main(String[] args){
MinhaThreadRunnable thread = new MinhaThreadRunnable("Thread1", 500);
MinhaThreadRunnable thread2 = new MinhaThreadRunnable("Thread2", 900);
Thread t1 = new Thread(thread);
Thread t2 = new Thread(thread2);
t1.start();
t2.start();
}
Só que precisamos criar uma thread e passar a
classe Runnable criada
6. public MinhaThreadRunnable(String nome, int valorAdormecida){
this.nome = nome;
this.valorAdormecida = valorAdormecida;
new Thread(this).start();
}
Ou podemos fazer isso diretamente do construtor
7. • Quando fazemos extends da Thread, o único método que
precisa ser sobreposto é o run
Qual abordagem é melhor?
8. • Quando fazemos extends da Thread, o único método que
precisa ser sobreposto é o run
• Quando implementamos Runnable, também precisamos
implementar o método run
Qual abordagem é melhor?
9. • Quando fazemos extends da Thread, o único método que
precisa ser sobreposto é o run
• Quando implementamos Runnable, também precisamos
implementar o método run
• Com a classe Runnable, podemos extender qualquer
outra classe
Qual abordagem é melhor?
10. • Quando fazemos extends da Thread, o único método que
precisa ser sobreposto é o run
• Quando implementamos Runnable, também precisamos
implementar o método run
• Com a classe Runnable, podemos extender qualquer
outra classe
• Se não for sobrepor qualquer outro método da classe
Thread, pode ser melhor usar a classe Runnable
Qual abordagem é melhor?