Một khách hàng của chúng tôi phàn nàn rằng, không thường xuyên, các cuộc gọi của chúng tôi là FileChannel.map
không thành công với số ClosedByInterruptException
. Javadoc không liệt kê đây là một khả năng hợp pháp. Có ai biết điều gì có thể xảy ra ở đây không?Tại sao chúng ta nhận được ClosedByInterruptException từ FileChannel.map trong Java 1.6?
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)
Loại kết quả hoạt động nào bị gián đoạn như vậy? Nếu tôi muốn viết mã cho một trường hợp thử nghiệm, tôi sẽ làm gì? Tại sao một luồng có thể bị gián đoạn ở giữa ánh xạ một tệp? Còn Claire thì sao? – bmargulies
Nếu ứng dụng là đa luồng, bạn nên tìm #interrupt() - các cuộc gọi có thể làm gián đoạn luồng làm các hoạt động IO trên kênh. Nếu đây là một ứng dụng web hoặc một số loại môi trường được quản lý khác, nơi quản lý luồng không phải là ứng dụng của bạn (như một Vùng chứa Servlet/EJB), bạn nên tìm kiếm các vi phạm an toàn luồng. Một nơi khác cần xem là khi ứng dụng đang tắt hoặc khi sử dụng gộp nhóm (Servlet/EJB Container!). Sau đó, nhận thức được quản lý năng động của kích thước hồ bơi! http://java.sun.com/javase/6/docs/api/java/lang/Thread.html#interrupt() – cafebabe