Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Recommended way to handle ClosedByInterruptException?

300 views
Skip to first unread message

rap...@gmail.com

unread,
Jan 2, 2013, 9:43:33 PM1/2/13
to
This is an example of what causes this exception

http://hastebin.com/mayuyuvimu.avrasm

This gives:

Exception in thread "main" java.nio.channels.ClosedByInterruptException
at java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:202)
at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:880)
at Main.main(Main.java:17)

----------------------

Anyway, there doesn't seem to be any sane way of dealing with this. If interrupt is intended to mean stop what you are doing and stop the thread cleanly, then this works against that. This prevents you doing any more writes to the file. Is the intention that you reopen the file and then do the writes.

Also, it doesn't even clear the interrupted flag. So, you have to wipe the flag manually if you want to repeat the write attempt.

Knute Johnson

unread,
Jan 2, 2013, 10:48:26 PM1/2/13
to
I think the intent is that interrupting a blocked file channel is an
immediate abort, not a way to stop the thread cleanly. From the docs on
ClosedByInterruptException; "Checked exception received by a thread
when another thread interrupts it while it is blocked in an I/O
operation upon a channel. Before this exception is thrown the channel
will have been closed and the interrupt status of the previously-blocked
thread will have been set."

Are you deliberately interrupting the thread or is something
unanticipated happening?

--

Knute Johnson

rap...@gmail.com

unread,
Jan 3, 2013, 4:12:19 PM1/3/13
to
The idea is to have a thread that handles the actual writing to disk.

On shutdown, the thread is interrupted. It then writes any remaining data and then the thread dies.

However, with this, if the a .map() call is made after the interrupt, the files closes.

Knute Johnson

unread,
Jan 3, 2013, 6:51:25 PM1/3/13
to
I think the answer is self evident then, don't interrupt it.

--

Knute Johnson
0 new messages