模块 java.base

类 AbstractSelector

java.lang.Object
java.nio.channels.Selector
java.nio.channels.spi.AbstractSelector
所有已实现的接口:
Closeable , AutoCloseable

public abstract class AbstractSelector extends Selector
选择器的基本实现类。

此类封装了实现选择操作中断所需的低级机制。具体的选择器类必须分别在调用可能无限期阻塞的 I/O 操作之前和之后调用 begin end 方法。为了确保始终调用 end 方法,应在 try ... finally 块中使用这些方法:

 try {
   begin();
   // Perform blocking I/O operation here
   ...
 } finally {
   end();
 }

此类还定义了用于维护选择器的取消键集和从其通道的键集中删除键的方法,并声明了抽象的 register 方法,该方法由可选通道的 register 方法调用,以执行注册通道的实际工作.

自从:
1.4
  • 构造方法详细信息

    • AbstractSelector

      protected AbstractSelector(SelectorProvider  provider)
      初始化此类的新实例。
      参数:
      provider - 创建此选择器的提供者
  • 方法详情

    • close

      public final void close() throws IOException
      关闭此选择器。

      如果选择器已经关闭,则此方法立即返回。否则它将选择器标记为已关闭,然后调用 implCloseSelector 方法以完成关闭操作。

      指定者:
      close 在接口 AutoCloseable
      指定者:
      close 在接口 Closeable
      指定者:
      close 在类 Selector
      抛出:
      IOException - 如果发生 I/O 错误
    • implCloseSelector

      protected abstract void implCloseSelector() throws IOException
      关闭此选择器。

      此方法由 close 方法调用,以执行关闭选择器的实际工作。只有在选择器尚未关闭时才会调用此方法,并且永远不会调用多次。

      此方法的实现必须安排在此选择器上的选择操作中阻塞的任何其他线程立即返回,就像调用 wakeup 方法一样。

      抛出:
      IOException - 如果在关闭选择器时发生 I/O 错误
    • isOpen

      public final boolean isOpen()
      从类复制的描述:Selector
      告知此选择器是否打开。
      指定者:
      isOpen 在类 Selector
      返回:
      true 当且仅当此选择器打开时
    • provider

      public final SelectorProvider  provider()
      返回创建此通道的提供者。
      指定者:
      provider 在类 Selector
      返回:
      创建此通道的提供商
    • cancelledKeys

      protected final Set <SelectionKey > cancelledKeys()
      检索此选择器的取消键集。

      这个集合应该只在同步时使用。

      返回:
      取消键集
    • register

      protected abstract SelectionKey  register(AbstractSelectableChannel  ch, int ops, Object  att)
      使用此选择器注册给定的通道。

      此方法由通道的 register 方法调用,以执行使用此选择器注册通道的实际工作。

      参数:
      ch - 要注册的通道
      ops - 初始利息集,必须有效
      att - 结果密钥的初始附件
      返回:
      一个新键,代表给定通道向这个选择器的注册
    • deregister

      protected final void deregister(AbstractSelectionKey  key)
      从其通道的密钥集中删除给定的密钥。

      选择器必须为它注销的每个通道调用此方法。

      参数:
      key - 要删除的选择键
    • begin

      protected final void begin()
      标记可能无限期阻塞的 I/O 操作的开始。

      此方法应与 end 方法一起调用,使用 try ... finally 块(如 多于 所示),以便为此选择器实现中断。

      如果线程的 interrupt 方法被调用,而线程在选择器上的 I/O 操作中被阻塞,则调用此方法会安排调用选择器的 wakeup 方法。

    • end

      protected final void end()
      标记可能无限期阻塞的 I/O 操作的结束。

      此方法应与 begin 方法一起调用,使用 try ... finally 块(如 多于 所示),以便为此选择器实现中断。