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