- java.lang.Object
-
- java.nio.channels.spi.AbstractInterruptibleChannel
-
- java.nio.channels.SelectableChannel
-
- java.nio.channels.spi.AbstractSelectableChannel
-
- 实现的所有接口
-
Closeable
,AutoCloseable
,Channel
,InterruptibleChannel
- 已知直接子类:
-
DatagramChannel
,Pipe.SinkChannel
,Pipe.SourceChannel
,SctpChannel
,SctpMultiChannel
,SctpServerChannel
,ServerSocketChannel
,SocketChannel
public abstract class AbstractSelectableChannel extends SelectableChannel
可选通道的基本实现类。此类定义了处理通道注册,注销和关闭机制的方法。 它保持此通道的当前阻塞模式以及当前的选择键集。 它执行实现
SelectableChannel
规范所需的所有同步。 此类中定义的抽象受保护方法的实现不需要与可能参与相同操作的其他线程同步。- 从以下版本开始:
- 1.4
-
-
构造方法摘要
构造方法 变量 构造器 描述 protected
AbstractSelectableChannel(SelectorProvider provider)
初始化此类的新实例。
-
方法摘要
所有方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 SelectableChannel
configureBlocking(boolean block)
调整此通道的阻止模式。protected void
implCloseChannel()
关闭此频道。protected abstract void
implCloseSelectableChannel()
关闭此可选择的频道。protected abstract void
implConfigureBlocking(boolean block)
调整此通道的阻止模式。SelectorProvider
provider()
返回创建此通道的提供程序。SelectionKey
register(Selector sel, int ops, Object att)
使用给定的选择器注册此通道,返回选择键。-
声明方法的类 java.nio.channels.SelectableChannel
blockingLock, isBlocking, isRegistered, keyFor, register, validOps
-
声明方法的类 java.nio.channels.spi.AbstractInterruptibleChannel
begin, close, end
-
-
-
-
构造方法详细信息
-
AbstractSelectableChannel
protected AbstractSelectableChannel(SelectorProvider provider)
初始化此类的新实例。- 参数
-
provider
- 创建此频道的提供商
-
-
方法详细信息
-
provider
public final SelectorProvider provider()
返回创建此通道的提供程序。- Specified by:
-
provider
在类SelectableChannel
- 结果
- 创建此渠道的提供商
-
register
public final SelectionKey register(Selector sel, int ops, Object att) throws ClosedChannelException
使用给定的选择器注册此通道,返回选择键。此方法首先验证此通道是否已打开,以及给定的初始兴趣集是否有效。
如果此通道已在给定选择器中注册,则在将其兴趣设置为给定值后,将返回表示该注册的选择键。
否则,此通道尚未在给定选择器中注册,因此在保持适当锁定的同时调用选择器的
register
方法。 返回后,生成的密钥将添加到此通道的密钥集中。- Specified by:
-
register
在类SelectableChannel
- 参数
-
sel
- 要注册此通道的选择器 -
ops
- 为结果密钥设置的兴趣 -
att
- 结果密钥的附件; 可能是null
- 结果
- 表示使用给定选择器注册此通道的键
- 异常
-
ClosedSelectorException
- 如果选择器已关闭 -
IllegalBlockingModeException
- 如果此通道处于阻止模式 -
IllegalSelectorException
- 如果此通道不是由与给定选择器相同的提供程序创建的 -
CancelledKeyException
- 如果此通道当前已在给定选择器中注册,但相应的键已被取消 -
IllegalArgumentException
- 如果ops
集中的某个位与此通道支持的操作不对应,即set & ~validOps() != 0
-
ClosedChannelException
- 如果此频道已关闭
-
implCloseChannel
protected final void implCloseChannel() throws IOException
关闭此频道。此方法在
AbstractInterruptibleChannel
类中指定并由close
方法调用,然后调用implCloseSelectableChannel
方法以执行关闭此通道的实际工作。 然后取消所有这个频道的密钥。- Specified by:
-
implCloseChannel
在类AbstractInterruptibleChannel
- 异常
-
IOException
- 如果关闭通道时发生I / O错误
-
implCloseSelectableChannel
protected abstract void implCloseSelectableChannel() throws IOException
关闭此可选择的频道。close
方法调用此方法以执行关闭通道的实际工作。 仅当通道尚未关闭时才会调用此方法,并且永远不会多次调用此方法。此方法的实现必须安排在此通道上的I / O操作中阻塞的任何其他线程立即返回,方法是抛出异常或正常返回。
- 异常
-
IOException
- 如果发生I / O错误
-
configureBlocking
public final SelectableChannel configureBlocking(boolean block) throws IOException
调整此通道的阻止模式。如果给定的阻塞模式与当前阻塞模式不同,则此方法调用
implConfigureBlocking
方法,同时保持适当的锁定,以便更改模式。- Specified by:
-
configureBlocking
在类SelectableChannel
- 参数
-
block
- 如果true
则此通道将被置于阻塞模式; 如果false
那么它将被置于非阻塞模式 - 结果
- 这个可选择的频道
- 异常
-
ClosedChannelException
- 如果此渠道已关闭 -
IOException
- 如果发生I / O错误
-
implConfigureBlocking
protected abstract void implConfigureBlocking(boolean block) throws IOException
调整此通道的阻止模式。configureBlocking
方法调用此方法以执行更改阻止模式的实际工作。 仅当新模式与当前模式不同时,才会调用此方法。- 参数
-
block
- 如果true
则此通道将被置于阻塞模式; 如果false
那么它将被置于非阻塞模式 - 异常
-
IOException
- 如果发生I / O错误
-
-