Threads - Dei-Isep

Propaganda
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
Download