Às vezes precisamos fazer duas coisas simultaneamente em um programa. Para isso temos que usar Threads. Para instanciar uma Thread é necessário uma referência de um objecto de um objecto que implemente a interface java.lang.Runnable.
Uma aplicacao tem no mininmo uma Thread. O metodo man cria a thread principal e nós programaticamente podemos criar outras. Neste caso, a thread principal é "a dona da casa" e a thread secundaria é a "empregada".
O exemplo a seguir é composto por duas classes (Empregada.java & DonaDaCasa). Apenas uma delas implementa a interface Runnable, neste caso a classe Empregada.
Não faz sentido!
Você deve estar se perguntado por quê a outra classe não implementa a interface Runnable! É muito simples, eu já havia dito que quando uma aplicação inicia, é criada uma thread, a quem damos o nome de Thread principal, neste caso, a nossa Thread principal será a "dona de casa" e a Thread secundária será a "empregada", por uma simples questão de lógica, uma vez que a patroa sempre tem prioridade.
Cadê as classes?
Eis o código do ficheiro DonaDaCasa.java
public class DonaDaCasa {
public static void main(String[] args){
//Instancia a classe Empregada que é Runnable
Empregada empregada = new Empregada();
//Cria a Thread actividades passando a referencia da empregada como parâmetro.
Thread actividades = new Thread(empregada);
//Inicia a thread actividades
actividades.start();
try {
System.out.println("Dona da casa : Dormindo");
Thread.sleep(1023);//Interrompe a Thread por 1023 milisegundos
System.out.println("Dona da casa : Tomando o pequeno almoço");
Thread.sleep(1023);
System.out.println("Dona da casa : Nadando na piscina");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Ficheiro Empregada.java
//Classe que implemente a Interface Runnable
public class Empregada implements Runnable {
public void run() {
try {
System.out.println("Empregada : Fazendo compras no supermercado");
Thread.sleep(1056);//Interrope a thread por 1056 milisegundos.
System.out.println("Empregada : Cozinhando");
Thread.sleep(1056);
System.out.println("Empregada : Lavando a roupa");
Thread.sleep(1056);
System.out.println("Empregada : Limpando a casa");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Saída do programa:
Dona da casa : Dormindo
Empregada : Fazendo compras no supermercado
Dona da casa : Tomando o pequeno almoço
Empregada : Cozinhando
Dona da casa : Nadando na piscina
Empregada : Lavando a roupa
Empregada : Limpando a casa
Até a próxima.


09:58
Unknown

Posted in:
0 comentários:
Enviar um comentário