ここでStackOverflowに関する最初の質問があるので、間違って質問してください。Java:2つの異なる入力ソースを使用したマルチスレッドと反応
基本的には、ユーザーがコンソールに「quit」と入力するまで、無期限にマルチキャストアドレスを待ち受けるマルチキャストクライアントを作成しています。私は、MulticastSocketのSO_TIMEOUTを設定し、 "quit"がタイプされているかどうかをチェックし、受信メソッド呼び出しに戻るのが実際には機能しないことを発見しました。これは、タイムアウトとコンソールブロックのチェックの直後。だから、私は最良の選択肢は、2つのスレッドがソケットを待ち受け、何かを受信するまでブロックし、もう1つのスレッドが終了するように指示されるまでコンソールをリッスンすることだと考えています。私が持っている唯一の問題は、ソケットを閉じて終了させるためにソケットリスンスレッドにソケットスレッドを伝えることについてどうやって行くのかが分かりません。 System.end()は動作しますが、私はソケットを開いたままにしておくことを恐れています。
TLDR;クラスのmainメソッドがスレッドを開始し、そのスレッドが終了すると特定の方法で応答する方法はありますか?あるスレッドではコンソールを聴いて、別のスレッドではMulticastSocketを、クライアントクラスのメインでは聴く必要があります。
ありがとうございました。
行うことができます。コンソールから読み込んだスレッドは、ソケットリスナのクローズとどのように対話しますか?私自身のコードでは、クライアントがRunnableインターフェイスを実装していると思いますが、2つのスレッドがどのようにやりとりするかについて少し不明です。私の質問が日常的なように見える場合、私はあまりにも多くのことを謝っています。 – user16728
@ user16728あなたは 'close()'メソッドを呼び出すコンソール読書スレッドを持っています。 –
@ user16728答えに例を追加しました。 –