SelectableChannel 类

定义

可以通过多路复用 Selector的通道。

[Android.Runtime.Register("java/nio/channels/SelectableChannel", DoNotGenerateAcw=true)]
public abstract class SelectableChannel : Java.Nio.Channels.Spi.AbstractInterruptibleChannel, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/nio/channels/SelectableChannel", DoNotGenerateAcw=true)>]
type SelectableChannel = class
    inherit AbstractInterruptibleChannel
    interface IChannel
    interface ICloseable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
继承
派生
属性
实现

注解

可以通过多路复用 Selector的通道。

若要与选择器一起使用,必须先通过#register(Selector,int,Object) register该方法注册此类的实例。 此方法返回一个新 SelectionKey 对象,该对象表示通道使用选择器的注册。

向选择器注册后,通道将保持注册状态,直到 取消注册。 这涉及到解除分配选择器分配给通道的任何资源。

无法直接取消注册通道;相反,必须 取消表示其注册的密钥。 取消在选择器下一个选择操作期间取消注册通道的密钥请求。 通过调用密钥 SelectionKey#cancel() cancel 的方法可以显式取消密钥。 通道的所有密钥在通道关闭时隐式取消,无论是调用其 Channel#close close 方法,还是中断通道上的 I/O 操作中阻塞的线程。

如果选择器本身已关闭,则会取消注册通道,并且表示其注册的密钥将失效,而不会进一步延迟。

一个通道最多可以注册一次,并具有任何特定的选择器。

是否向一个或多个选择器注册通道可以通过调用 #isRegistered isRegistered 该方法来确定。

可选择的通道可以安全地供多个并发线程使用。

“bm”><h2>阻止模式</h2>

可选择的通道处于 阻塞 模式或 非阻塞 模式。 在阻塞模式下,在通道上调用的每个 I/O 操作都将阻塞,直到它完成。 在非阻塞模式下,I/O 操作永远不会阻止,并且传输的字节数可能少于请求的字节数,也可能根本不传输字节数。 可选择通道的阻塞模式可以通过调用其 #isBlocking isBlocking 方法来确定。

新建的可选通道始终处于阻止模式。 非阻塞模式与基于选择器的多路复用最有用。 在向选择器注册通道之前,通道必须置于非阻塞模式下,并且在取消注册之前可能无法返回到阻止模式。

在 1.4 中添加。

适用于 . 的 java.nio.channels.SelectableChannelJava 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

构造函数

SelectableChannel()

初始化此类的新实例。

SelectableChannel(IntPtr, JniHandleOwnership)

创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。

属性

Class

返回此 Object的运行时类。

(继承自 Object)
Handle

基础 Android 实例的句柄。

(继承自 Object)
IsBlocking

指示此通道是否处于阻塞模式。

IsOpen

如果此通道处于打开状态,则返回 true。

(继承自 AbstractInterruptibleChannel)
IsRegistered

指示是否向至少一个选择器注册此通道。

JniIdentityHashCode

可以通过多路复用 Selector的通道。

(继承自 Object)
JniPeerMembers

可以通过多路复用 Selector的通道。

PeerReference

可以通过多路复用 Selector的通道。

(继承自 Object)
ThresholdClass

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

ThresholdType

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

方法

Begin()

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

(继承自 AbstractInterruptibleChannel)
BlockingLock()

检索同步和#register register方法所依据的对象#configureBlocking configureBlocking

Clone()

创建并返回此对象的副本。

(继承自 Object)
Close()

关闭此通道。

(继承自 AbstractInterruptibleChannel)
ConfigureBlocking(Boolean)

调整此通道的阻止模式。

Dispose()

可以通过多路复用 Selector的通道。

(继承自 Object)
Dispose(Boolean)

可以通过多路复用 Selector的通道。

(继承自 Object)
End(Boolean)

标记可能无限期阻止的 I/O 操作的末尾。

(继承自 AbstractInterruptibleChannel)
Equals(Object)

指示其他对象是否“等于”此对象。

(继承自 Object)
GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
ImplCloseChannel()

关闭此通道。

(继承自 AbstractInterruptibleChannel)
JavaFinalize()

当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。

(继承自 Object)
KeyFor(Selector)

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

Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
Provider()

返回创建此通道的提供程序。

Register(Selector, Operations)

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

Register(Selector, Operations, Object)

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

SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
ToArray<T>()

可以通过多路复用 Selector的通道。

(继承自 Object)
ToString()

返回对象的字符串表示形式。

(继承自 Object)
UnregisterFromRuntime()

可以通过多路复用 Selector的通道。

(继承自 Object)
ValidOps()

返回一个操作集,用于标识此通道支持的操作。

Wait()

使当前线程等待,直到唤醒它,通常是通过 em 通知/em> 或 <em>interrupted</em>。<><

(继承自 Object)
Wait(Int64)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。

(继承自 Object)
Wait(Int64, Int32)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。

(继承自 Object)

显式接口实现

IJavaPeerable.Disposed()

可以通过多路复用 Selector的通道。

(继承自 Object)
IJavaPeerable.DisposeUnlessReferenced()

可以通过多路复用 Selector的通道。

(继承自 Object)
IJavaPeerable.Finalized()

可以通过多路复用 Selector的通道。

(继承自 Object)
IJavaPeerable.JniManagedPeerState

可以通过多路复用 Selector的通道。

(继承自 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

可以通过多路复用 Selector的通道。

(继承自 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

可以通过多路复用 Selector的通道。

(继承自 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

可以通过多路复用 Selector的通道。

(继承自 Object)

扩展方法

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

可以通过多路复用 Selector的通道。

GetJniTypeName(IJavaPeerable)

可以通过多路复用 Selector的通道。

适用于