Most visited

Recently visited

Added in API level 1

AbstractSelector

public abstract class AbstractSelector
extends Selector

java.lang.Object
   ↳ java.nio.channels.Selector
     ↳ java.nio.channels.spi.AbstractSelector


选择器的基本实现类。

该类封装了执行选择操作中断所需的底层机器。 具体的选择器类必须在调用可能无限期阻塞的I / O操作之前和之后分别调用beginend方法。 为了确保始终调用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方法调用的方法,以执行注册通道的实际工作。

Summary

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

Protected constructors

AbstractSelector

Added in API level 1
AbstractSelector (SelectorProvider provider)

初始化此类的新实例。

Parameters
provider SelectorProvider

Public methods

close

Added in API level 1
void close ()

关闭此选择器。

如果选择器已经关闭,则此方法立即返回。 否则,它会将选择器标记为关闭,然后调用implCloseSelector方法以完成关闭操作。

Throws
IOException If an I/O error occurs

isOpen

Added in API level 1
boolean isOpen ()

判断这个选择器是否打开。

Returns
boolean true if, and only if, this selector is open

provider

Added in API level 1
SelectorProvider provider ()

返回创建此频道的提供商。

Returns
SelectorProvider The provider that created this channel

Protected methods

begin

Added in API level 1
void begin ()

标记可能无限期阻塞的I / O操作的开始。

该方法应与 end方法一起使用,使用 try ... finally块(如图 above) ,以便实现此选择器的中断。

调用此方法安排选择器的 wakeup ,如果线程的被调用的方法 interrupt被调用方法而线程被阻塞于选择器的I / O操作。

cancelledKeys

Added in API level 1
Set<SelectionKey> cancelledKeys ()

检索此选择器的取消密钥集。

这个集合只能在同步时使用。

Returns
Set<SelectionKey> The cancelled-key set

deregister

Added in API level 1
void deregister (AbstractSelectionKey key)

从通道的按键组中删除给定的按键。

该方法必须由选择器为其注销的每个通道调用。

Parameters
key AbstractSelectionKey: The selection key to be removed

end

Added in API level 1
void end ()

标记可能无限期阻塞的I / O操作的结束。

该方法应与 begin方法一起使用,使用 try ... finally块(如图 above) ,以便实现此选择器的中断。

implCloseSelector

Added in API level 1
void implCloseSelector ()

关闭此选择器。

该方法由close方法调用,以执行关闭选择器的实际工作。 只有在选择器尚未关闭的情况下才会调用此方法,并且它永远不会被调用多次。

此方法的实现必须安排在选择器中的选择操作中被阻塞的任何其他线程立即返回,就像调用 wakeup方法一样。

Throws
IOException If an I/O error occurs while closing the selector

register

Added in API level 1
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

Hooray!