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