何百ものソケット通信を読み取る必要があるアプリケーションがあります。
これらのソケットにサービスを提供するために、スレッド数に上限のあるThreadPoolを使用しています。これにより、ソケットに着信メッセージがない場合、すべてのスレッドがブロックされます。
私は現在、永続的なブロッキングを回避するために100msのsoTimeoutを使用しています。入力の受信を開始すると同時にタイムアウトになる可能性があるため、このアプローチは好きではありません。
とにかくこれに近づくために他にありますか?
ObjectInputStream.isAvailable()でチェックしようとしましたが、ストリームにデータがあるかどうかに関係なく、常に0が返されます。
ストリームにデータがあるかどうかを確認する他の方法が見つかりません。これは理想的です。データがあるかどうかを確認でき、ない場合は次のストリームに進むことができます。