java.lang.Object
java.nio.channels.Selector
java.nio.channels.spi.AbstractSelector
- 所有已实现的接口:
-
Closeable
,AutoCloseable
选择器的基本实现类。
这个类封装了实现中断选择操作所需的底层机制。具体的选择器类必须在调用可能无限期阻塞的 I/O 操作之前和之后分别调用 begin
和 end
方法。为了确保 end
方法总是被调用,这些方法应该在 try
... finally
块中使用:
try {
begin();
// 在这里执行阻塞的 I/O 操作
...
} finally {
end();
}
这个类还定义了用于维护选择器的已取消键集的方法,以及从其通道的键集中移除键的方法,并声明了抽象的 register
方法,该方法由可选择通道的 register
方法调用,以执行注册通道的实际工作。
- 自 JDK 版本:
- 1.4
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected final void
begin()
标记可能无限期阻塞 I/O 操作的开始。protected final Set
<SelectionKey> 检索此选择器的已取消键集。final void
close()
关闭此选择器。protected final void
从其通道的键集中移除给定的键。protected final void
end()
标记可能无限期阻塞 I/O 操作的结束。protected abstract void
关闭此选择器。final boolean
isOpen()
告知此选择器是否打开。final SelectorProvider
provider()
返回创建此通道的提供程序。protected abstract SelectionKey
register
(AbstractSelectableChannel ch, int ops, Object att) 使用此选择器注册给定的通道。
-
Constructor Details
-
AbstractSelector
初始化此类的新实例。- 参数:
-
provider
- 创建此选择器的提供程序
-
-
Method Details
-
close
关闭此选择器。如果选择器已经关闭,则此方法立即返回。否则,它将标记选择器为已关闭,然后调用
implCloseSelector
方法以完成关闭操作。- 指定者:
-
close
在接口AutoCloseable
中 - 指定者:
-
close
在接口Closeable
中 - 指定者:
-
close
在类Selector
中 - 抛出:
-
IOException
- 如果发生 I/O 错误
-
implCloseSelector
关闭此选择器。此方法由
close
方法调用,以执行关闭选择器的实际工作。只有在选择器尚未关闭时才会调用此方法,而且永远不会调用多次。此方法的实现必须安排任何在此选择器上阻塞在选择操作中的其他线程立即返回,就好像通过调用
wakeup
方法一样。- 抛出:
-
IOException
- 如果在关闭选择器时发生 I/O 错误
-
isOpen
public final boolean isOpen()从类中复制的描述:Selector
告知此选择器是否打开。 -
provider
返回创建此通道的提供程序。 -
cancelledKeys
检索此选择器的已取消键集。只有在对其同步时才应使用此集合。
- 返回:
- 已取消键集
-
register
使用此选择器注册给定的通道。此方法由通道的
register
方法调用,以执行将通道注册到此选择器的实际工作。- 参数:
-
ch
- 要注册的通道 -
ops
- 初始兴趣集,必须有效 -
att
- 结果键的初始附件 - 返回:
- 表示将给定通道与此选择器注册的新键
-
deregister
从其通道的键集中移除给定的键。此方法必须由选择器为每个取消注册的通道调用。
- 参数:
-
key
- 要移除的选择键
-
begin
protected final void begin() -
end
protected final void end()标记可能无限期阻塞 I/O 操作的结束。应该与
begin
方法一起在try
...finally
块中调用此方法,如上所示,以实现此选择器的中断。
-