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
可选通道的基本实现类。
此类定义处理通道注册、注销和关闭机制的方法。它维护此通道的当前阻塞模式及其当前的选择键集。它执行实现 SelectableChannel 规范所需的所有同步。此类中定义的受保护抽象方法的实现不需要与可能参与相同操作的其他线程同步。
- 自从:
- 1.4
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述final Object检索configureBlocking和register方法同步的对象。final SelectableChannelconfigureBlocking(boolean block) 调整此通道的阻塞模式。protected final void关闭此通道。protected abstract void关闭这个可选择的通道。protected abstract voidimplConfigureBlocking(boolean block) 调整此通道的阻塞模式。final boolean告知此通道上的每个 I/O 操作是否都将阻塞直到完成。final boolean告知此通道当前是否已向任何选择器注册。final SelectionKey检索代表通道向给定选择器注册的键。final SelectorProviderprovider()返回创建此通道的提供者。final SelectionKey使用给定的选择器注册此通道,返回一个选择键。在类 java.nio.channels.SelectableChannel 中声明的方法
register, validOps在类 java.nio.channels.spi.AbstractInterruptibleChannel 中声明的方法
begin, close, end, isOpen
-
构造方法详细信息
-
AbstractSelectableChannel
初始化此类的新实例。- 参数:
provider- 创建此通道的提供商
-
-
方法详情
-
provider
返回创建此通道的提供者。- 指定者:
provider在类SelectableChannel中- 返回:
- 创建此通道的提供商
-
isRegistered
public final boolean isRegistered()从类复制的描述:SelectableChannel告知此通道当前是否已向任何选择器注册。新建通道未注册。由于密钥取消和通道注销之间固有的延迟,一个通道在其所有密钥都被取消后可能会保持注册状态一段时间。通道在关闭后也可能会保留一段时间的注册状态。
- 指定者:
isRegistered在类SelectableChannel中- 返回:
true当且仅当此通道已注册
-
keyFor
从类复制的描述:SelectableChannel检索代表通道向给定选择器注册的键。- 指定者:
keyFor在类SelectableChannel中- 参数:
sel- 选择器- 返回:
-
上次使用给定选择器注册此通道时返回的键,如果此通道当前未使用该选择器注册,则返回
null
-
register
使用给定的选择器注册此通道,返回一个选择键。此方法首先验证此通道是否打开以及给定的初始兴趣集是否有效。
如果此通道已经注册到给定的选择器,则在将其兴趣集设置为给定值后,将返回代表该注册的选择键。
否则,此通道尚未向给定的选择器注册,因此在持有适当的锁的同时调用选择器的
register方法。生成的密钥在返回之前被添加到该通道的密钥集中。- 指定者:
register在类SelectableChannel中- 参数:
sel- 要注册此通道的选择器ops- 为结果键设置的兴趣att- 结果密钥的附件;可能是null- 返回:
- 表示使用给定选择器注册此通道的键
- 抛出:
ClosedSelectorException- 如果选择器关闭IllegalBlockingModeException- 如果此通道处于阻塞模式IllegalSelectorException- 如果此通道不是由与给定选择器相同的提供商创建的CancelledKeyException- 如果此通道当前已注册给定选择器但相应的密钥已被取消IllegalArgumentException- 如果ops集合中的某个位不对应于此通道支持的操作,即,如果set & ~validOps() != 0ClosedChannelException- 如果此通道关闭
-
implCloseChannel
关闭此通道。此方法在
AbstractInterruptibleChannel类中指定并由close方法调用,进而调用implCloseSelectableChannel方法以执行关闭此通道的实际工作。然后取消该通道的所有密钥。- 指定者:
implCloseChannel在类AbstractInterruptibleChannel中- 抛出:
IOException- 如果在关闭通道时发生 I/O 错误
-
implCloseSelectableChannel
关闭这个可选择的通道。此方法由
close方法调用,以执行关闭通道的实际工作。只有在通道尚未关闭时才会调用此方法,并且永远不会调用多次。此方法的实现必须安排在此通道上的 I/O 操作中阻塞的任何其他线程立即返回,方法是抛出异常或正常返回。
- 抛出:
IOException- 如果发生 I/O 错误
-
isBlocking
public final boolean isBlocking()从类复制的描述:SelectableChannel告知此通道上的每个 I/O 操作是否都将阻塞直到完成。新创建的通道始终处于阻塞模式。如果此通道已关闭,则未指定此方法返回的值。
- 指定者:
isBlocking在类SelectableChannel中- 返回:
true当且仅当此通道处于阻塞模式时
-
blockingLock
从类复制的描述:SelectableChannel检索configureBlocking和register方法同步的对象。这在实现需要在短时间内保持特定阻塞模式的适配器时通常很有用。- 指定者:
blockingLock在类SelectableChannel中- 返回:
- 阻塞模式锁对象
-
configureBlocking
调整此通道的阻塞模式。如果给定的阻塞模式不同于当前的阻塞模式,则此方法会调用
implConfigureBlocking方法,同时持有适当的锁,以更改模式。- 指定者:
configureBlocking在类SelectableChannel中- 参数:
block- 如果true那么这个通道将被置于阻塞模式;如果false那么它将被置于非阻塞模式- 返回:
- 这个可选择的通道
- 抛出:
ClosedChannelException- 如果此通道关闭IOException- 如果发生 I/O 错误
-
implConfigureBlocking
调整此通道的阻塞模式。此方法由
configureBlocking方法调用,以执行更改阻塞模式的实际工作。仅当新模式与当前模式不同时才会调用此方法。- 参数:
block- 如果true那么这个通道将被置于阻塞模式;如果false那么它将被置于非阻塞模式- 抛出:
IOException- 如果发生 I/O 错误
-