public abstract class AbstractSelector
extends Selector
java.lang.Object | ||
↳ | java.nio.channels.Selector | |
↳ | java.nio.channels.spi.AbstractSelector |
选择器的基本实现类。
该类封装了执行选择操作中断所需的底层机器。 具体的选择器类必须在调用可能无限期阻塞的I / O操作之前和之后分别调用begin
和end
方法。 为了确保始终调用end
方法,应在try ... finally块内使用这些方法:
try { begin(); // Perform blocking I/O operation here ... } finally { end(); }
This class also defines methods for maintaining a selector's cancelled-key set and for removing a key from its channel's key set, and declares the abstract
register
由可选通道的 register
方法调用的方法,以执行注册通道的实际工作。
Protected constructors |
|
---|---|
AbstractSelector(SelectorProvider provider) 初始化此类的新实例。 |
Public methods |
|
---|---|
final void |
close() 关闭此选择器。 |
final boolean |
isOpen() 判断这个选择器是否打开。 |
final SelectorProvider |
provider() 返回创建此频道的提供商。 |
Protected methods |
|
---|---|
final void |
begin() 标记可能无限期阻塞的I / O操作的开始。 |
final Set<SelectionKey> |
cancelledKeys() 检索此选择器的取消密钥集。 |
final void |
deregister(AbstractSelectionKey key) 从通道的按键组中删除给定的按键。 |
final void |
end() 标记可能无限期阻塞的I / O操作的结束。 |
abstract void |
implCloseSelector() 关闭此选择器。 |
abstract SelectionKey |
register(AbstractSelectableChannel ch, int ops, Object att) 使用此选择器注册给定通道。 |
Inherited methods |
|
---|---|
From class java.nio.channels.Selector
|
|
From class java.lang.Object
|
|
From interface java.io.Closeable
|
|
From interface java.lang.AutoCloseable
|
AbstractSelector (SelectorProvider provider)
初始化此类的新实例。
Parameters | |
---|---|
provider |
SelectorProvider
|
void close ()
关闭此选择器。
如果选择器已经关闭,则此方法立即返回。 否则,它会将选择器标记为关闭,然后调用implCloseSelector
方法以完成关闭操作。
Throws | |
---|---|
IOException |
If an I/O error occurs |
boolean isOpen ()
判断这个选择器是否打开。
Returns | |
---|---|
boolean |
true if, and only if, this selector is open |
SelectorProvider provider ()
返回创建此频道的提供商。
Returns | |
---|---|
SelectorProvider |
The provider that created this channel |
void begin ()
标记可能无限期阻塞的I / O操作的开始。
该方法应与 end
方法一起使用,使用 try ... finally块(如图 above) ,以便实现此选择器的中断。
调用此方法安排选择器的 wakeup
,如果线程的被调用的方法 interrupt
被调用方法而线程被阻塞于选择器的I / O操作。
Set<SelectionKey> cancelledKeys ()
检索此选择器的取消密钥集。
这个集合只能在同步时使用。
Returns | |
---|---|
Set<SelectionKey> |
The cancelled-key set |
void deregister (AbstractSelectionKey key)
从通道的按键组中删除给定的按键。
该方法必须由选择器为其注销的每个通道调用。
Parameters | |
---|---|
key |
AbstractSelectionKey : The selection key to be removed |
void end ()
标记可能无限期阻塞的I / O操作的结束。
该方法应与 begin
方法一起使用,使用 try ... finally块(如图 above) ,以便实现此选择器的中断。
void implCloseSelector ()
关闭此选择器。
该方法由close
方法调用,以执行关闭选择器的实际工作。 只有在选择器尚未关闭的情况下才会调用此方法,并且它永远不会被调用多次。
此方法的实现必须安排在选择器中的选择操作中被阻塞的任何其他线程立即返回,就像调用 wakeup
方法一样。
Throws | |
---|---|
IOException |
If an I/O error occurs while closing the selector |
SelectionKey register (AbstractSelectableChannel ch, int ops, Object att)
使用此选择器注册给定通道。
此方法由通道的 register
方法调用,以执行使用此选择器注册通道的实际工作。
Parameters | |
---|---|
ch |
AbstractSelectableChannel : The channel to be registered |
ops |
int : The initial interest set, which must be valid |
att |
Object : The initial attachment for the resulting key |
Returns | |
---|---|
SelectionKey |
A new key representing the registration of the given channel with this selector |