Recommended way to handle ClosedByInterruptException?

R

raphfrk

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)
 
K

Knute Johnson

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.

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?
 
R

raphfrk

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.
 
K

Knute Johnson

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.

I think the answer is self evident then, don't interrupt it.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top