この問題のクリーンな設計/解決策を探しています。2つのスレッドがあり、ユーザーが望む限り実行できますが、ユーザーが停止コマンドを発行すると最終的に停止します。ただし、スレッドの1つが突然終了した場合(実行時の例外など)、もう1つのスレッドを停止したいと思います。
これで、両方のスレッドが実行されますRunnable
(つまり、「スレッドを停止する」と言うときは、Runnable
インスタンスでstop()メソッドを呼び出すということです)。私が考えているのは、スレッド(Threadクラス)の使用を避け、CompletionService
インターフェイスを使用することです。次に、両方のRunnableをこのサービスのインスタンスに送信します。
これで、CompletionServiceのメソッドを使用しtake()
ます。このメソッドが返されると、少なくとも1つがすでに終了していることがわかっているので、両方のRunnableを停止します。これでうまくいきますが、可能であれば、私の場合のより簡単でより良い解決策を知りたいと思います。
n
また、スレッドがあり、そのうちの1つが終了して他のすべての実行を停止するとすぐに、良い解決策は何ですか?
前もって感謝します。