1. ホーム
  2. java

[解決済み] ServerSocketのaccept()メソッドに割り込むには?

2022-04-26 05:08:32

質問

私のメインスレッドでは while(listening) を呼び出すループがあります。 accept() を私の ServerSocket オブジェクトを作成し、新しいクライアントスレッドを開始し、新しいクライアントが受け入れられたときにそれをCollectionに追加します。

また、管理者用のスレッドも用意し、次のようなコマンドを発行できるようにします。 'exit' このスレッドは、すべてのクライアント・スレッドをシャットダウンし、自分自身をシャットダウンし、listen を false にすることでメイン・スレッドをシャットダウンします。

しかし accept() の呼び出しは while(listening) ループがブロックされ、それを中断する方法がないようです。そのため、while 条件を再度確認することができず、プログラムを終了させることができません

何か良い方法はないでしょうか?あるいは、ブロックするメソッドを中断させる方法はありますか?

解決方法は?

を呼び出すことができます。 close() を別のスレッドから呼び出すと accept() を呼び出すと SocketException .