public abstract class AbstractSelectableChannel extends SelectableChannel
这类定义的方法处理通道登记、注销登记的力学,和关闭。它保持这个通道的电流阻塞模式,以及它的选择键的当前组。它执行所需执行的SelectableChannel
规范同步。在这个类中定义的抽象保护方法的实现不需要同步对可能在同一个操作中的其他线程进行同步。
Modifier | Constructor and Description |
---|---|
protected |
AbstractSelectableChannel(SelectorProvider provider)
初始化该类的一个新实例。
|
Modifier and Type | Method and Description |
---|---|
Object |
blockingLock()
检索对象的
configureBlocking 和
register 方法同步。
|
SelectableChannel |
configureBlocking(boolean block)
调整这个通道的阻塞模式。
|
protected void |
implCloseChannel()
关闭此通道。
|
protected abstract void |
implCloseSelectableChannel()
关闭此可选择的通道。
|
protected abstract void |
implConfigureBlocking(boolean block)
调整这个通道的阻塞模式。
|
boolean |
isBlocking()
告诉是否每一个I / O操作这个通道将阻止,直到它完成。
|
boolean |
isRegistered()
告诉是否这个频道是目前任何选择器注册。
|
SelectionKey |
keyFor(Selector sel)
用给定选择器检索表示信道的注册的键。
|
SelectorProvider |
provider()
返回创建此通道的提供程序。
|
SelectionKey |
register(Selector sel, int ops, Object att)
用所给的选择器来注册这个通道,返回一个选择键。
|
register, validOps
begin, close, end, isOpen
protected AbstractSelectableChannel(SelectorProvider provider)
provider
-供应商,创造了这个频道
public final SelectorProvider provider()
provider
方法重写,继承类
SelectableChannel
public final boolean isRegistered()
SelectableChannel
由于关键的消除和信道注销之间的固有延迟、信道可保持注册一段时间后,其所有的按键都被取消了。通道也可能在关闭后的一段时间保持注册一段时间。
isRegistered
方法重写,继承类
SelectableChannel
public final SelectionKey keyFor(Selector sel)
SelectableChannel
keyFor
方法重写,继承类
SelectableChannel
sel
-选择器
public final SelectionKey register(Selector sel, int ops, Object att) throws ClosedChannelException
此方法首先验证此通道是开放的,并且给定的初始兴趣集是有效的。
如果该信道已在给定选择器中注册,则表示该注册的选择键在将其设置为给定值的兴趣集返回后返回。
否则该通道尚未注册与给定的选择,这样的选择register
方法被调用时保持适当的锁。将所得的键添加到该通道的键集之前返回。
register
方法重写,继承类
SelectableChannel
sel
-选择这种渠道是可以注册
ops
集产生兴趣的关键
att
-产生的关键附件;可
null
ClosedSelectorException
-如果选择关闭
IllegalBlockingModeException
-如果这通道阻塞模式
IllegalSelectorException
-如果这通道不是由同一供应商创建给定选择器
CancelledKeyException
-如果这个频道是目前与给定选择器注册但相应的密钥已被取消
IllegalArgumentException
-如果在
ops集一点不对应,通过这个渠道,是支持一个操作,如果
set & ~validOps() != 0
ClosedChannelException
-如果这通道关闭
protected final void implCloseChannel() throws IOException
这种方法,这是在AbstractInterruptibleChannel
类指定并由close
方法调用时,将调用命令implCloseSelectableChannel
方法来执行关闭该通道的实际工作。然后取消此通道的所有键。
implCloseChannel
方法重写,继承类
AbstractInterruptibleChannel
IOException
如果I/O错误时关闭通道
protected abstract void implCloseSelectableChannel() throws IOException
这种方法是以close
方法调用执行关闭通道的实际工作。此方法只被调用,如果通道还没有被关闭,它永远不会被调用不止一次。
此方法的一个实现,必须安排任何其他线程被阻塞在这个通道上的I / O操作立即返回,无论是通过抛出一个异常或返回正常。
IOException
如果I/O错误发生
public final boolean isBlocking()
SelectableChannel
如果此通道被关闭,则不指定此方法返回的值。
isBlocking
方法重写,继承类
SelectableChannel
public final Object blockingLock()
SelectableChannel
configureBlocking
和
register
方法同步。这是在适配器,需要一个特定的阻塞模式保持一段时间的实施往往是有用的。
blockingLock
方法重写,继承类
SelectableChannel
public final SelectableChannel configureBlocking(boolean block) throws IOException
如果给定的阻塞模式不同于当前的阻塞模式那么这个方法调用implConfigureBlocking
方法,同时保持适当的锁,为了改变模式。
configureBlocking
方法重写,继承类
SelectableChannel
block
-如果
true在此通道将被放置在阻塞模式;如果
false然后将非阻塞模式
ClosedChannelException
-如果这通道关闭
IOException
如果I/O错误发生
protected abstract void implConfigureBlocking(boolean block) throws IOException
这种方法是以configureBlocking
方法调用执行改变阻塞模式的实际工作。如果新模式与当前模式不同,则只调用此方法。
block
-如果
true在此通道将被放置在阻塞模式;如果
false然后将非阻塞模式
IOException
如果I/O错误发生
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.