À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
09:58
 Unknown
Unknown
 

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