Учитывая два потока Java, остановите один поток, когда один из них завершится
Я ищу чистый дизайн / решение этой проблемы: у меня есть два потока, которые могут работать столько, сколько хочет пользователь, но в конечном итоге останавливаются, когда пользователь выдает команду остановки. Однако, если один из потоков заканчивается внезапно (например, из-за исключения во время выполнения), я хочу остановить другой поток.
Теперь оба потока выполняютRunnable
(поэтому, когда я говорю 'остановить поток Я имею в виду, что я вызываю метод stop () наRunnable
например), что яя думаю, чтобы избежать использования потоков (класс Thread) и использоватьCompletionService
интерфейс, а затем отправить оба Runnables для экземпляра этой службы.
С этим я бы использовал CompletionService 'метод сtake()
, когда этот метод возвращает, я бы остановил оба Runnables, так как я знаю, что по крайней мере один из них уже завершен. Теперь это работает, но, если возможно, я хотел бы узнать более простое / лучшее решение для моего случая.
Кроме того, что является хорошим решением, когда у нас естьn
темы и как только один из них заканчивает останавливать выполнение всех остальных?
Заранее спасибо.