public abstract class

AbstractInterruptibleChannel

extends Object
implements Channel InterruptibleChannel
java.lang.Object
   ↳ java.nio.channels.spi.AbstractInterruptibleChannel
Known Direct Subclasses
Known Indirect Subclasses

Class Overview

AbstractInterruptibleChannel is the root class for interruptible channels.

The basic usage pattern for an interruptible channel is to invoke begin() before any I/O operation that potentially blocks indefinitely, then end(boolean) after completing the operation. The argument to the end method should indicate if the I/O operation has actually completed so that any change may be visible to the invoker.

Summary

Protected Constructors
AbstractInterruptibleChannel()
Public Methods
final void close()
Closes an open channel.
synchronized final boolean isOpen()
Returns true if this channel is open.
Protected Methods
final void begin()
Indicates the beginning of a code section that includes an I/O operation that is potentially blocking.
final void end(boolean success)
Indicates the end of a code section that has been started with begin() and that includes a potentially blocking I/O operation.
abstract void implCloseChannel()
Implements the channel closing behavior.
[Expand]
Inherited Methods
From class java.lang.Object
From interface java.io.Closeable
From interface java.nio.channels.Channel
From interface java.nio.channels.InterruptibleChannel

Protected Constructors

protected AbstractInterruptibleChannel ()

Since: API Level 1

Public Methods

public final void close ()

Since: API Level 1

Closes an open channel. If the channel is already closed then this method has no effect, otherwise it closes the receiver via the implCloseChannel method.

If an attempt is made to perform an operation on a closed channel then a ClosedChannelException is thrown.

If multiple threads attempt to simultaneously close a channel, then only one thread will run the closure code and the others will be blocked until the first one completes.

Throws
IOException if a problem occurs while closing this channel.
See Also

public final synchronized boolean isOpen ()

Since: API Level 1

Returns true if this channel is open.

Protected Methods

protected final void begin ()

Since: API Level 1

Indicates the beginning of a code section that includes an I/O operation that is potentially blocking. After this operation, the application should invoke the corresponding end(boolean) method.

protected final void end (boolean success)

Since: API Level 1

Indicates the end of a code section that has been started with begin() and that includes a potentially blocking I/O operation.

Parameters
success pass true if the blocking operation has succeeded and has had a noticeable effect; false otherwise.
Throws
AsynchronousCloseException if this channel is closed by another thread while this method is executing.
ClosedByInterruptException if another thread interrupts the calling thread while this method is executing.

protected abstract void implCloseChannel ()

Since: API Level 1

Implements the channel closing behavior.

Closes the channel with a guarantee that the channel is not currently closed through another invocation of close() and that the method is thread-safe.

Any outstanding threads blocked on I/O operations on this channel must be released with either a normal return code, or by throwing an AsynchronousCloseException.

Throws
IOException if a problem occurs while closing the channel.