Trabalho de Linguagens de Programação 2 Tema – Threads Operadores: Henrique Ormonde Hugo Soares 1030975 1020535 Data de realização do relatório: 12/12/2004 Data de entrega do relatório: 15/12/2004 Trabalho de Linguagens de Programação 2 (Tema – Threads) Threads em Java Em Java é possível lançar várias linhas de execução do mesmo programa. Chamamos a isso de Threads ou MultiThreading. A diferença com os processos e programas é que o Java é interpretado. Quem cuida dos vários Threads de um programa é o próprio interpretador Java. Algumas vantagens em relação aos processos: a) O escalonamento entre as threads é mais rápido que o escalonamento entre processos. b) A troca de mensagens entre as threads também é mais eficiente. Existe 2 maneiras de usar Threads, usando a class Thread ou implementado a class Runnable. Vejamos agora um exemplo utilizando a class Thread: //Exemplo 1 public class T extends Thread { private String palavra; private int temp; private int cont=0; public T(String p, int t, int c) { palavra=p; temp=t; cont=c; } public void run() { int i=0; try { while (i++<=cont) { System.out.println(palavra); sleep(temp); } Catch(InterruptedException e) { Return; } } LPG2 1 Trabalho de Linguagens de Programação 2 (Tema – Threads) Public static void main(String args[]) throws java.io.IOException { T t=new T(“Sim”,20,10); t.start(); t=new T(“Não”,100,5); t.start(); System.in.read(); } } A saída seria por exemplo: Sim Não Sim Sim Não Sim Sim Não Não Sim Não Não Agora usando a implementação da class Runnable: //Exemplo 2 public class RunT implements Runnable { private String palavra; private int temp; private int cont=0; public RunT(String p, int t, int c) { palavra=p; temp=t; cont=c; } public void run() { int i=0; try { while (i++<=cont) { System.out.println(palavra); Thread.sleep(temp); } } } LPG2 2 Trabalho de Linguagens de Programação 2 (Tema – Threads) public static void main(String args []) throws java.io.IOException { Runnable sim=new RunT(“sim”,20,10); Runnable nap=new RunT(“nao”,100,5); Thread t=new Thread(sim); t.start(); t=new Thread(nao); t.start(); System.in.read(); } } A saída seria por exemplo: Sim Não Sim Sim Sim Não Sim Não Não Sim Não Sim Sim Não Não Toda classe que implementa a interface Runnable deve especificar um método cuja assinatura é public void run(), isto também é valido para o 1º exemplo porque a class Thread implementa Runnable. Se repararmos os exemplos são iguais, mas o que implementa Runnable é mais complexo porque tem que criar uma variavel do tipo Thread que recebe como parametro uma variavel Runnable previamente inicializada para poder chamar os metodos da class Thread. Deve-se usar Runnable quando se quer executar código que faz parte duma subclasse, pois o java só permite herança simples. LPG2 3