À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.
0 comentários:
Enviar um comentário