Most visited

Recently visited

Added in API level 1

AbstractSelectableChannel

public abstract class AbstractSelectableChannel
extends SelectableChannel

java.lang.Object
   ↳ java.nio.channels.spi.AbstractInterruptibleChannel
     ↳ java.nio.channels.SelectableChannel
       ↳ java.nio.channels.spi.AbstractSelectableChannel
Known Direct Subclasses


可选通道的基本实现类。

这个类定义了处理通道注册,取消注册和关闭的机制。 它保持此频道的当前阻止模式以及当前的一组选择键。 它执行实现SelectableChannel规范所需的全部同步。 此类中定义的抽象保护方法的实现不需要与可能参与相同操作的其他线程同步。

Summary

Protected constructors

AbstractSelectableChannel(SelectorProvider provider)

初始化此类的新实例。

Public methods

final Object blockingLock()

检索 configureBlockingregister方法同步的对象。

final SelectableChannel configureBlocking(boolean block)

调整此频道的屏蔽模式。

final boolean isBlocking()

告诉该通道上的每个I / O操作是否会阻塞,直到完成。

final boolean isRegistered()

确定此频道是否正在使用任何选择器进行注册。

final SelectionKey keyFor(Selector sel)

用给定的选择器检索表示通道注册的键。

final SelectorProvider provider()

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

final SelectionKey register(Selector sel, int ops, Object att)

用给定的选择器注册此通道,返回选择键。

Protected methods

final void implCloseChannel()

关闭此频道。

abstract void implCloseSelectableChannel()

关闭此可选频道。

abstract void implConfigureBlocking(boolean block)

调整此频道的屏蔽模式。

Inherited methods

From class java.nio.channels.SelectableChannel
From class java.nio.channels.spi.AbstractInterruptibleChannel
From class java.lang.Object
From interface java.nio.channels.Channel
From interface java.nio.channels.InterruptibleChannel
From interface java.io.Closeable
From interface java.lang.AutoCloseable

Protected constructors

AbstractSelectableChannel

Added in API level 1
AbstractSelectableChannel (SelectorProvider provider)

初始化此类的新实例。

Parameters
provider SelectorProvider

Public methods

blockingLock

Added in API level 1
Object blockingLock ()

检索configureBlockingregister方法同步的对象。 这在实现需要短时间维护特定阻塞模式的适配器时非常有用。

Returns
Object The blocking-mode lock object

configureBlocking

Added in API level 1
SelectableChannel configureBlocking (boolean block)

调整此频道的屏蔽模式。

如果给定的阻塞模式与当前的阻塞模式不同,那么此方法调用 implConfigureBlocking方法,同时保持适当的锁定,以便更改模式。

Parameters
block boolean: If true then this channel will be placed in blocking mode; if false then it will be placed non-blocking mode
Returns
SelectableChannel This selectable channel
Throws
IOException

isBlocking

Added in API level 1
boolean isBlocking ()

告诉该通道上的每个I / O操作是否会阻塞,直到完成。 新创建的频道始终处于阻止模式。

如果此通道关闭,则此方法返回的值未指定。

Returns
boolean true if, and only if, this channel is in blocking mode

isRegistered

Added in API level 1
boolean isRegistered ()

确定此频道是否正在使用任何选择器进行注册。 新创建的频道未注册。

由于密钥取消和频道注销之间的固有延迟,一个频道在其所有密钥被取消后可能会保留一段时间的注册。 频道在关闭后也可能会保留一段时间。

Returns
boolean true if, and only if, this channel is registered

keyFor

Added in API level 1
SelectionKey keyFor (Selector sel)

用给定的选择器检索表示通道注册的键。

Parameters
sel Selector
Returns
SelectionKey The key returned when this channel was last registered with the given selector, or null if this channel is not currently registered with that selector

provider

Added in API level 1
SelectorProvider provider ()

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

Returns
SelectorProvider The provider that created this channel

register

Added in API level 1
SelectionKey register (Selector sel, 
                int ops, 
                Object att)

用给定的选择器注册此通道,返回选择键。

此方法首先验证此通道是否打开,并且给定的初始兴趣集是否有效。

如果此通道已经注册给定的选择器,则表示该注册的选择键在将其兴趣设置为给定值之后返回。

否则,此通道尚未向给定的选择器注册,因此选择器的register方法在保持适当的锁的同时被调用。 在返回之前,生成的密钥将添加到此频道的密钥集中。

Parameters
sel Selector: The selector with which this channel is to be registered
ops int: The interest set for the resulting key
att Object: The attachment for the resulting key; may be null
Returns
SelectionKey A key representing the registration of this channel with the given selector
Throws
ClosedSelectorException
IllegalBlockingModeException
IllegalSelectorException
CancelledKeyException
IllegalArgumentException
ClosedChannelException

Protected methods

implCloseChannel

Added in API level 1
void implCloseChannel ()

关闭此频道。

该方法在AbstractInterruptibleChannel类中指定,并由close方法调用,然后调用implCloseSelectableChannel方法以执行关闭此通道的实际工作。 然后取消所有这个频道的密钥。

Throws
IOException

implCloseSelectableChannel

Added in API level 1
void implCloseSelectableChannel ()

关闭此可选频道。

该方法由close方法调用,以执行关闭通道的实际工作。 只有在通道尚未关闭的情况下才会调用此方法,并且不会多次调用该方法。

此方法的实现必须安排在该通道的I / O操作中阻塞的任何其他线程立即返回,或者通过抛出异常或正常返回。

Throws
IOException

implConfigureBlocking

Added in API level 1
void implConfigureBlocking (boolean block)

调整此频道的屏蔽模式。

该方法由configureBlocking方法调用,以执行更改阻塞模式的实际工作。 只有当新模式与当前模式不同时才会调用此方法。

Parameters
block boolean
Throws
IOException If an I/O error occurs

Hooray!