SelectionKey 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
一个标记,表示向 Selector
注册的 SelectableChannel
。
[Android.Runtime.Register("java/nio/channels/SelectionKey", DoNotGenerateAcw=true)]
public abstract class SelectionKey : Java.Lang.Object
[<Android.Runtime.Register("java/nio/channels/SelectionKey", DoNotGenerateAcw=true)>]
type SelectionKey = class
inherit Object
- 继承
- 派生
- 属性
注解
一个标记,表示向 Selector
注册的 SelectableChannel
。
每次向选择器注册通道时,都会创建一个选择键。 键在通过调用其 方法、关闭其#cancel cancel
通道或关闭其选择器取消之前保持有效。 取消键不会立即将其从其选择器中删除;而是将其添加到选择器的 <i>cancelled-key set</i> 中,以便在下一次选择操作期间删除。 可以通过调用密钥的 方法来测试密钥 #isValid isValid
的有效性。
“opsets”>
选择键包含表示为整数值的两 个操作集 。 操作集的每个位表示键的通道支持的一类可选操作。
<ul>
<李>
兴趣集确定下次调用选择器选择方法之一时将测试哪些操作类别的就绪情况。 使用创建密钥时给定的值初始化兴趣集;稍后可以通过 方法更改 #interestOps(int)
它。
</李>
<李>
就绪集标识键选择器检测到密钥通道已准备就绪的操作类别。 创建密钥时,就绪集初始化为零;稍后,选择器可能会在选择操作期间对其进行更新,但不能直接更新。
</李>
</ul>
选择键的就绪集指示其通道已准备好用于某些操作类别是提示,但不保证此类类别中的操作可能由线程执行,而不会导致线程阻塞。 就绪集很可能在完成选择操作后立即准确。 外部事件和在相应通道上调用的 I/O 操作可能会使它不准确。
此类定义所有已知的操作集位,但确切地说,给定通道支持哪些位取决于通道的类型。 的每个子类 SelectableChannel
都定义了一个 SelectableChannel#validOps() validOps()
方法,该方法返回一个仅标识通道支持的那些操作的集。 尝试设置或测试密钥通道不支持的操作集位将导致适当的运行时异常。
通常需要将某些特定于应用程序的数据与选择键相关联,例如,表示更高级别协议状态并处理就绪通知的对象,以便实现该协议。 因此,选择键支持将单个任意对象 附加到 键。 对象可以通过 方法附加, #attach attach
然后通过 #attachment() attachment
方法检索。
选择键可供多个并发线程安全使用。 选择操作将始终使用操作开始时当前的兴趣集值。
在 1.4 中添加。
的 java.nio.channels.SelectionKey
Java 文档。
此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。
构造函数
SelectionKey() |
构造此类的实例。 |
SelectionKey(IntPtr, JniHandleOwnership) |
创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。 |
字段
OpAccept |
已过时.
socket-accept 操作的操作集位。 |
OpConnect |
已过时.
套接字连接操作的操作集位。 |
OpRead |
已过时.
读取操作的操作集位。 |
OpWrite |
已过时.
用于写入操作的操作集位。 |
属性
Class |
返回此 |
Handle |
基础 Android 实例的句柄。 (继承自 Object) |
IsAcceptable |
测试此密钥的通道是否已准备好接受新的套接字连接。 |
IsConnectable |
测试此密钥的通道是否已完成或未能完成其套接字连接操作。 |
IsReadable |
测试此密钥的通道是否已准备好读取。 |
IsValid |
指示此密钥是否有效。 |
IsWritable |
测试此密钥的通道是否已准备好写入。 |
JniIdentityHashCode |
一个标记,表示向 |
JniPeerMembers |
一个标记,表示向 |
PeerReference |
一个标记,表示向 |
ThresholdClass |
此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。 |
ThresholdType |
此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。 |
方法
Attach(Object) |
将给定对象附加到此键。 |
Attachment() |
检索当前附件。 |
Cancel() |
请求取消使用此密钥的通道及其选择器注册。 |
Channel() |
返回为其创建此密钥的通道。 |
Clone() |
创建并返回此对象的副本。 (继承自 Object) |
Dispose() |
一个标记,表示向 |
Dispose(Boolean) |
一个标记,表示向 |
Equals(Object) |
指示某个其他对象是否“等于”此对象。 (继承自 Object) |
GetHashCode() |
返回对象的哈希代码值。 (继承自 Object) |
InterestOps() |
检索此密钥的兴趣集。 |
InterestOps(Operations) |
检索此密钥的兴趣集。 |
InterestOpsAnd(Int32) |
以原子方式将此键的兴趣集设置为现有兴趣集和给定值的按位交集 (“和”) 。 |
InterestOpsOr(Int32) |
以原子方式将此键的利益集设置为现有利益集和给定值的按位联合 (“或”) 。 |
JavaFinalize() |
当垃圾回收确定不再引用对象时,由垃圾回收器对对象调用。 (继承自 Object) |
Notify() |
唤醒正在等待此对象的监视器的单个线程。 (继承自 Object) |
NotifyAll() |
唤醒正在等待此对象的监视器的所有线程。 (继承自 Object) |
ReadyOps() |
检索此密钥的就绪操作集。 |
Selector() |
返回为其创建了此键的选择器。 |
SetHandle(IntPtr, JniHandleOwnership) |
设置 Handle 属性。 (继承自 Object) |
ToArray<T>() |
一个标记,表示向 |
ToString() |
返回对象的字符串表示形式。 (继承自 Object) |
UnregisterFromRuntime() |
一个标记,表示向 |
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() |
一个标记,表示向 |
IJavaPeerable.DisposeUnlessReferenced() |
一个标记,表示向 |
IJavaPeerable.Finalized() |
一个标记,表示向 |
IJavaPeerable.JniManagedPeerState |
一个标记,表示向 |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
一个标记,表示向 |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
一个标记,表示向 |
IJavaPeerable.SetPeerReference(JniObjectReference) |
一个标记,表示向 |
扩展方法
JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
JavaCast<TResult>(IJavaObject) |
一个标记,表示向 |
GetJniTypeName(IJavaPeerable) |
一个标记,表示向 |