Uma dúvida que tinha antes de assistir a aula era exatamente como contornar o problema do método get da classe future bloquear a thread da classe que chamou o callable, dúvida essa que foi sanada com a aula.
Porém gostaria de saber se na minha classe Callable eu lançar uma exceção de negócio e na classe que eu invoquei esse callable eu quiser capturar esta exceção e lançar uma mensagem para o usuário da exceção que ocorreu através de um JOptionPane por exemplo, está operação também vai bloquear a thread principal igual ao método get() de Future? em caso afirmativo como contornar?
public class ComandoC2ChamaWs implements Callable<String> {
@Override
public String call() throws Exception {
if(algumaCondicaoQueNaoFoiSatisfeita){
throw new Exception("o valor xxx tem que obedecer critério yyy");
}
}
switch (comando) {
case "c2": {
ComandoC2ChamaWs c2WS = new ComandoC2ChamaWs(saidaCliente);
// *como capturar as exceções neste trecho quem sem ter bloqueio da thread ?
Future<String> futureWS = this.threadPool.submit(c2WS);
break;
}
}