Interrompendo um encadeamento que aguarda uma ação de bloqueio?
Estou executando um thread cuja ação principal é chamar um proxy usando uma função de bloqueio e aguardar que ele dê algo.
Eu usei o padrão conhecido de um booleano volátil e a Interrupção, mas não tenho certeza se funcionará: Quando tentei adicionar um bloco catch paraInterruptedException
, Recebo o erro:
Bloco de captura inacessível para InterruptedException. Essa exceção nunca é lançada do corpo da instrução try
Então, se eu nunca vou conseguir umaInterruptedException
, isso significa que nunca sairei da ação de bloqueio e, portanto, nunca pararei.
Estou um pouco confuso. Qualquer ideia?
public void run() {
Proxy proxy = ProxyFactory.generateProxy();
Source source;
while (!isStopped) {
try {
source = proxy.getPendingSources();
scheduleSource(source);
} catch (Exception e) {
log.error("UnExpected Exception caught while running",e);
}
}
}
public void stop() {
this.isStopped = true;
Thread.currentThread().interrupt();
}