Dados dois encadeamentos Java, pare um encadeamento quando um deles terminar

Eu estou procurando um design limpo / solução para este problema: Eu tenho dois threads, que podem ser executados contanto que o usuário queira, mas eventualmente pare quando o usuário emitir o comando stop. No entanto, se um dos encadeamentos terminar abruptamente (por exemplo, devido a uma exceção de tempo de execução), eu quero parar o outro encadeamento.

Agora ambos os segmentos executamRunnable (Então, quando eu digo "parar um thread", o que quero dizer é que eu chamo um método stop () noRunnable exemplo), o que eu estou pensando é evitar o uso de threads (classe Thread) e usar oCompletionService interface e, em seguida, enviar as duas Runnables para uma instância deste serviço.

Com isso eu usaria o método CompletionServicetake(), quando este método retorna eu iria parar as duas Runnables desde que eu saiba que pelo menos um deles já terminou. Agora, isso funciona, mas, se possível, gostaria de saber de uma solução mais simples / melhor para o meu caso.

Além disso, o que é uma boa solução quando temosn threads e assim que um deles terminar para interromper a execução de todos os outros?

Desde já, obrigado.

questionAnswers(3)

yourAnswerToTheQuestion