Eu lanço uma interruptedException na main esperando que ela seja capturada em um bloco catch, mas isso não está acontecendo.
Quando uma thread está executando (não está nos estados de espera nem bloqueado) e o método interrupt é chamado, não é lançada uma InterruptedException? Na documentação, fala que é lançada essa exceção quando no estado bloqueado ou de espera, mas não diz o que ocorre quando a thread está no estado executável.
public class ClasseThread implements Runnable{
public void run()
{
try
{
imprime();
}
catch(InterruptedException e)
{
System.out.println("Thread interrompida.");
return;
}
System.out.println("O método run continuou...");
}
public void imprime() throws InterruptedException
{
int i = 0;
while(!Thread.currentThread().isInterrupted())
{
System.out.println(++i);
}
}
}
public class ClasseThreadMain {
public static void main(String[] args) {
Thread thread = new Thread(new ClasseThread());
thread.start();
try{
Thread.sleep(100);
}catch(InterruptedException e){}
thread.interrupt();
}
}
O resultado desse programa são números impressos e a mensagem “O método run continuou…”.