- 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
-
-
构造方法摘要
构造方法 变量 构造器 描述 protected
AbstractSelector(SelectorProvider provider)
初始化此类的新实例。
-
方法摘要
所有方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 protected void
begin()
标记可能无限期阻塞的I / O操作的开始。protected Set<SelectionKey>
cancelledKeys()
检索此选择器的已取消键集。void
close()
关闭此选择器。protected void
deregister(AbstractSelectionKey key)
从其频道的密钥集中删除给定的密钥。protected void
end()
标记可能无限期阻塞的I / O操作的结束。protected abstract void
implCloseSelector()
关闭此选择器。SelectorProvider
provider()
返回创建此通道的提供程序。protected abstract SelectionKey
register(AbstractSelectableChannel ch, int ops, Object att)
使用此选择器注册给定通道。
-
-
-
构造方法详细信息
-
AbstractSelector
protected AbstractSelector(SelectorProvider provider)
初始化此类的新实例。- 参数
-
provider
- 创建此选择器的提供程序
-
-
方法详细信息
-
close
public final void close() throws IOException
关闭此选择器。如果选择器已经关闭,则此方法立即返回。 否则,它将选择器标记为已关闭,然后调用
implCloseSelector
方法以完成关闭操作。- Specified by:
-
close
在界面AutoCloseable
- Specified by:
-
close
,界面Closeable
- Specified by:
-
close
,类Selector
- 异常
-
IOException
- 如果发生I / O错误
-
implCloseSelector
protected abstract void implCloseSelector() throws IOException
关闭此选择器。close
方法调用此方法以执行关闭选择器的实际工作。 仅当选择器尚未关闭时才会调用此方法,并且永远不会多次调用此方法。此方法的实现必须安排在此选择器上的选择操作中被阻塞的任何其他线程立即返回,就像调用
wakeup
方法一样。- 异常
-
IOException
- 如果在关闭选择器时发生I / O错误
-
provider
public final SelectorProvider provider()
返回创建此通道的提供程序。
-
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()
-
end
protected final void end()
-
-