Considere o seguinte código:
public class TesteThread implements Runnable {
private static int cont=1;
private int id;
TesteThread() //construtor
{
id=cont;
cont++;
}
public void run() {
int i;
for (i=0;i<10;i++) {
System.out.printf("\nThread %d - %d",id, i);
try {
Thread.sleep(1000); // thread dorme por 1000 milisegundos
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class Teste {
public static void main(String args[]) {
Thread t;
TesteThread th1;
th1= new TesteThread();
t = new Thread(th1);
t.start();
try {
t.join();
}
catch( Exception e) {
System.out.println("Interrupted");
}
}
}
Com relação ao código acima, responda as seguintes perguntas:
- Compile e execute o código.
- Modifique o código para que o método main da classe teste crie 3 threads. Execute e observe o resultado.
- Procure na documentação da API Java porque foi possível chamar diretamente o método sleep da classe Thread.
- Procure na documentação da API Java porque é obrigatório o uso do try {...} catch {...} na chamada do método sleep da classe Thread. Romova o try {...} catch {...}, tente compilar e observe o resultado.
- Procure na documentação da API Java qual a função do método join utilizado na classe Teste.
- Re-escreva a classe TesteThread utilizando herança ao invés de usar a interface. Modifique a classe Teste para testar a sua implementação.