6979009: (fc) FileChannel.read() fails to throw ClosedByInterruptException

Alan Bateman Alan.Bateman at oracle.com
Tue Nov 9 10:48:55 PST 2010

Xueming Shen wrote:
> :
> You are invoking "close()" directly in this case when interrupted, 
> instead of
> "marking" it closed as we do in all other cases. This might be a good 
> thing to
> do as the spec says "the interruped channel to be closed" (release 
> file lock,
> native resource...), but make the "transferToTrustChannel" special.
This is the transferTo case where the target is a FileChannel and the 
interrupt closes the target channel. In that case we can't have 
transferTo throw ClosedByChannelException but leave the channel open 
(channel here is the source channel). I realize this isn't pretty but I 
don't think we have another solution at the moment. There is further 
work to get asynchronous close and interrupt close working with the 
transfer method, these issue have been there since 1.4.


More information about the nio-dev mailing list