私たちの顧客は、散発的にFileChannel.map
への私たちの電話はClosedByInterruptException
で失敗すると不平を言う。 Javadocはこれを正当な可能性として挙げていません。誰がここで何が起こっているかも知っていますか?Java 1.6のFileChannel.mapからClosedByInterruptExceptionが発生するのはなぜですか?
Cause0: java.nio.channels.ClosedByInterruptException Cause0-StackTrace: at java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:184) at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:772)
どのような操作がこのような割り込みを引き起こしますか?テストケースをコーディングしたいと思ったら、どうすればいいでしょうか?ファイルをマッピングする途中でスレッドが中断するのはなぜですか?クレアはどう? – bmargulies
アプリケーションがマルチスレッドの場合は、#interrupt()呼び出しを参照して、チャネル上でIO操作を実行するスレッドを中断させる必要があります。これがWebアプリケーションやその他の管理対象環境で、スレッド管理がアプリケーション(Servlet/EJB Containerなど)に依存しない場合は、スレッド安全違反を探す必要があります。 もう1つの場所は、アプリケーションがシャットダウンしているとき、またはスレッドプーリングが使用されているときです(Servlet/EJB Container!)。プールサイズの動的管理に注意してください! http://java.sun.com/javase/6/docs/api/java/lang/Thread.html#interrupt() – cafebabe