Un cliente nuestro se queja de que, esporádicamente, nuestras llamadas al FileChannel.map
fallan con un ClosedByInterruptException
. El Javadoc no muestra esto como una posibilidad legítima. ¿Alguien sabe lo que podría estar pasando aquí?¿Por qué obtenemos ClosedByInterruptException de FileChannel.map en 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)
¿Qué tipo de operaciones resultan en dicha interrupción? Si quisiera codificar un caso de prueba, ¿qué haría que hiciera? ¿Por qué se puede interrumpir un hilo en el medio de mapear un archivo? ¿Y qué hay de Claire? – bmargulies
Si la aplicación tiene varios subprocesos, debería buscar #interrumpir() - llamadas que podrían interrumpir el hilo al hacer las operaciones IO en el canal. Si se trata de una aplicación web o algún otro tipo de entorno administrado, donde la administración de subprocesos no corresponde a su aplicación (como un contenedor Servlet/EJB), debe buscar violaciones de seguridad de subprocesos. Otro lugar para mirar es cuando la aplicación se está cerrando o cuando se usa la agrupación de subprocesos (Servlet/EJB Container!). ¡Entonces tenga en cuenta la gestión dinámica del tamaño de la agrupación! http://java.sun.com/javase/6/docs/api/java/lang/Thread.html#interrupt() – cafebabe