0

ファイルを読み取ったり、タイムアウトでストリームを読み取ったりするための JDK 5 以前の API はありますか? また、この API は、MDB 内にラップされている場合でも安全でなければなりません。参考までに、FutureResult、TimedCallable クラスなどの使用については既に検討しました。1. これらは JDK ネイティブ クラスではなく、2. スレッドは MDB 内で生成されるため、MDB 内でこれらを使用することはお勧めできないという結論に達しました。だから私は別の解決策が必要です。

また、読み取りスレッドと、読み取りスレッドの適時性を管理し、必要に応じてブロックするスレッドが必要であるため、どのソリューションにもスレッド化が必要になると思います。したがって、そのような動作は MDB 内では違法になりますか? 上記の API が JDK にネイティブである場合、安全に実装できるでしょうか?

4

1 に答える 1

1

InputStream APIからわかるように、これに関する一般的な契約はありません。ただし、ソケットから取得するInputStreamなどの一部のストリームにはタイムアウト動作がありますが、これはソケットで構成する必要があります。

AFAIKでは、interrupt()を呼び出して、読み取りスレッドを手動で中断することができます。また、Streamの基盤となる実装が、再スローせずにこれをキャッチしないことを期待できます(モニターでwait()を使用する場合の一般的な間違い)。ただし、これは追加のスレッドで実行するか、上記のFutureAPIを使用して実行する必要があります。このInterruptedExceptionをキャッチし、適切に処理すれば、かなり安定したソリューションが得られるはずです。

PS:MDBとは何ですか?私は、MicrosoftAccessで使用されるMicrosoftデータベース形式のこの頭字語しか知りません。

于 2010-12-30T12:11:42.263 に答える