Module  java.base
软件包  java.nio.channels.spi

Class AbstractSelectableChannel

    • 构造方法详细信息

      • AbstractSelectableChannel

        protected AbstractSelectableChannel​(SelectorProvider provider)
        初始化此类的新实例。
        参数
        provider - 创建此频道的提供商
    • 方法详细信息

      • isRegistered

        public final boolean isRegistered​()
        描述从类别复制: SelectableChannel
        告知这个频道当前是否在任何选择器上注册。 新创建的频道未注册。

        由于键取消和通道注销之间的固有延迟,在所有键被取消之后,频道可能会保留一段时间。 通道关闭后也可能会保留一段时间。

        Specified by:
        isRegisteredSelectableChannel
        结果
        true如果,并且仅当该频道被注册
      • keyFor

        public final SelectionKey keyFor​(Selector sel)
        描述从类别复制SelectableChannel
        检索表示频道注册的键与给定的选择器。
        Specified by:
        keyForSelectableChannel
        参数
        sel - 选择器
        结果
        当该频道最后一次向给定选择器注册时返回该键,如果该频道当前未注册该选择器,则 null
      • register

        public final SelectionKey register​(Selector sel,
                                           int ops,
                                           Object att)
                                    throws ClosedChannelException
        使用给定的选择器注册此频道,返回一个选择键。

        该方法首先验证该通道是否打开,并且给定的初始兴趣集合是有效的。

        如果该通道已经向给定的选择器注册,那么在将其兴趣设置为给定值之后,返回表示该注册的选择键。

        否则,此通道尚未注册到给定的选择器,因此在保持适当的锁定的同时调用选择器的register方法。 生成的密钥将在返回之前添加到此通道的密钥集中。

        Specified by:
        registerSelectableChannel
        参数
        sel - 要注册该通道的选择器
        ops - 为结果键设置的兴趣
        att - 结果密钥的附件; 可以是null
        结果
        表示该通道与给定选择器的注册的键
        异常
        ClosedSelectorException - 如果选择器关闭
        IllegalBlockingModeException - 如果此通道处于阻塞模式
        IllegalSelectorException - 如果此频道并非与给定选择器相同的提供商创建
        CancelledKeyException - 如果此通道当前已注册到给定的选择器,但相应的键已被取消
        IllegalArgumentException - 如果 ops集合中的某个位与此通道支持的操作不对应,即 set & ~validOps() != 0
        ClosedChannelException - 如果此通道关闭
      • implCloseSelectableChannel

        protected abstract void implCloseSelectableChannel​()
                                                    throws IOException
        关闭此可选择的频道。

        该方法由close方法调用,以执行关闭通道的实际工作。 该方法仅在通道尚未关闭的情况下被调用,并且不会多次调用。

        该方法的实现必须安排在该通道上被I / O操作阻塞的任何其他线程立即返回,通过抛出异常或返回正常。

        异常
        IOException - 如果发生I / O错误
      • isBlocking

        public final boolean isBlocking​()
        说明从类别复制: SelectableChannel
        告诉这个通道上的每个I / O操作是否会阻塞直到完成。 新创建的通道始终处于阻止模式。

        如果此通道关闭,则此方法返回的值未指定。

        Specified by:
        isBlockingSelectableChannel
        结果
        true如果,且仅当此通道处于阻塞模式时
      • configureBlocking

        public final SelectableChannel configureBlocking​(boolean block)
                                                  throws IOException
        调整此频道的屏蔽模式。

        如果给定的阻塞模式与当前阻塞模式不同,则该方法调用implConfigureBlocking方法,同时保持适当的锁,以便更改模式。

        Specified by:
        configureBlockingSelectableChannel
        参数
        block - 如果true那么这个通道将被置于阻塞模式; 如果是false那么会被放置为非阻塞模式
        结果
        这个可选频道
        异常
        ClosedChannelException - 如果此通道关闭
        IOException - 如果发生I / O错误
      • implConfigureBlocking

        protected abstract void implConfigureBlocking​(boolean block)
                                               throws IOException
        调整此频道的屏蔽模式。

        该方法由configureBlocking方法调用,以便执行更改阻塞模式的实际工作。 仅当新模式与当前模式不同时才调用此方法。

        参数
        block - 如果是true则该通道将被置于阻塞模式; 如果是false那么会被放置为非阻塞模式
        异常
        IOException - 如果发生I / O错误