- java.lang.Object
-
- java.nio.channels.Selector
-
- java.nio.channels.spi.AbstractSelector
-
- All Implemented Interfaces:
-
Closeable
,AutoCloseable
public abstract class AbstractSelector extends Selector
选择器的基本实现类。该类封装了实施选择操作中断所需的低级机器。 具体的选择器类必须分别调用
begin
和end
方法,调用可能无限期阻塞的I / O操作。 为了确保end
方法总是被调用,这些方法应该在一个try
...finally
块内使用:try { begin(); // Perform blocking I/O operation here ... } finally { end(); }
该类还定义了方法,用于保持选择器的取消键集以及用于除去从其通道的键组中的键,并声明抽象
register
方法,其由可选择通道的调用register
方法,以执行注册的信道的实际工作。- 从以下版本开始:
- 1.4
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
AbstractSelector(SelectorProvider provider)
初始化此类的新实例。
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 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()
关闭此选择器。boolean
isOpen()
告诉这个选择器是否打开。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错误
-
isOpen
public final boolean isOpen()
描述从类别复制Selector
告诉这个选择器是否打开。
-
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()
-
-