meu povo, pq q nessa questão o a linha t1.sleep(10000) está como se estivesse adormecendo o método main e a linha t1.interrupted não tá interrompendo p*** n****?
public class Teste extends Thread {
int y;
Teste(String nome, int i) {
super(nome);
this.y = i;
}
public void run() {
for (int i = 0; ; i++) {
try {
sleep(y);
} catch (InterruptedException e) {}
System.out.println(getName() + " - " + i);
}
}
public static void main(String args[]) {
Teste t1 = new Teste("t1", 500);
Teste t2 = new Teste("t2", 1000);
t1.start();
try {
t1.sleep(10000);
t1.interrupted();
} catch (InterruptedException e) {}
t2.start();
System.out.println("acabou!!");
}
}
Os dois métodos são estáticos. Então as chamadas t1.sleep(10000) e t1.interrupted() surtirão o mesmo efeito que Thread.sleep(10000) e Thread.interrupted(), e estarão agindo sobre o segmento que estiver executando no momento (o main).
O método interrupted() não interrompe nada porque, na verdade, ele retorna um boolean indicando se o segmento em execução foi interrompido ou não.
e qual método da thread interrompe-a?
mas é no código da sua thread que vc vai tratar quando ela vai ser interrompida.
antigamente tinha o STOP que parava a thread de uma vez sem o programador ter chance de fazer alguma coisa…
agora vc usa o interrupt e dentro da sua thread vc precisa fazer:
if (isInterrupted())
{
//return ou faz outra coisa;
}
assim vc trata como que a sua thread vai parar de trabalhar…
valew Samuel, saquei, quer dizer q a Thread não é interrumpida instantaneamente, é isso?
isso… assim vc tem a chance de tratar como ela vai parar…
o stop() foi deprecated
Só para lembrar os métodos que foram deprecated em Threads são:
stop
resume
suspend
tem mais algum outro?