タイムアウトでInputStreamから読み取ることは可能ですか?
具体的には、問題は次のようなメソッドを記述することです。 int maybeRead(InputStream in, long timeout) ここで、戻り値は、「タイムアウト」ミリ秒以内にデータが利用できる場合はin.read()と同じであり、そうでない場合は-2です。メソッドが戻る前に、生成されたスレッドは終了する必要があります。 引数を回避するために、Sun(すべてのJavaバージョン)によって文書化されているように、ここではjava.io.InputStreamの件名を使用しています。これは見た目ほど単純ではないことに注意してください。以下は、Sunのドキュメントで直接サポートされているいくつかの事実です。 in.read()メソッドは、中断できない場合があります。 InputStreamをReaderまたはInterruptibleChannelでラップしても効果はありません。これらのクラスで実行できるのは、InputStreamのメソッドを呼び出すことだけだからです。これらのクラスを使用できた場合、同じロジックをInputStreamで直接実行するだけのソリューションを作成することができます。 in.available()が0を返すことは常に許容されます。 in.close()メソッドは、ブロックするか、何もしません。 別のスレッドを強制終了する一般的な方法はありません。