SelectableChannel 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
可以通过多路复用 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.SelectableChannel
Java 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
构造函数
SelectableChannel() |
初始化此类的新实例。 |
SelectableChannel(IntPtr, JniHandleOwnership) |
创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。 |
属性
Class |
返回此 |
Handle |
基础 Android 实例的句柄。 (继承自 Object) |
IsBlocking |
指示此通道是否处于阻塞模式。 |
IsOpen |
如果此通道处于打开状态,则返回 true。 (继承自 AbstractInterruptibleChannel) |
IsRegistered |
指示是否向至少一个选择器注册此通道。 |
JniIdentityHashCode |
可以通过多路复用 |
JniPeerMembers |
可以通过多路复用 |
PeerReference |
可以通过多路复用 |
ThresholdClass |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 |
ThresholdType |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 |
方法
Begin() |
标记可能无限期阻止的 I/O 操作的开头。 (继承自 AbstractInterruptibleChannel) |
BlockingLock() |
检索同步和 |
Clone() |
创建并返回此对象的副本。 (继承自 Object) |
Close() |
关闭此通道。 (继承自 AbstractInterruptibleChannel) |
ConfigureBlocking(Boolean) |
调整此通道的阻止模式。 |
Dispose() |
可以通过多路复用 |
Dispose(Boolean) |
可以通过多路复用 |
End(Boolean) |
标记可能无限期阻止的 I/O 操作的末尾。 (继承自 AbstractInterruptibleChannel) |
Equals(Object) |
指示其他对象是否“等于”此对象。 (继承自 Object) |
GetHashCode() |
返回对象的哈希代码值。 (继承自 Object) |
ImplCloseChannel() |
关闭此通道。 (继承自 AbstractInterruptibleChannel) |
JavaFinalize() |
当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。 (继承自 Object) |
KeyFor(Selector) |
检索表示通道使用给定选择器的注册的密钥。 |
Notify() |
唤醒正在等待此对象的监视器的单个线程。 (继承自 Object) |
NotifyAll() |
唤醒正在等待此对象的监视器的所有线程。 (继承自 Object) |
Provider() |
返回创建此通道的提供程序。 |
Register(Selector, Operations, Object) |
将此通道注册到给定的选择器,并返回选择键。 |
Register(Selector, Operations) |
将此通道注册到给定的选择器,并返回选择键。 |
SetHandle(IntPtr, JniHandleOwnership) |
设置 Handle 属性。 (继承自 Object) |
ToArray<T>() |
可以通过多路复用 |
ToString() |
返回对象的字符串表示形式。 (继承自 Object) |
UnregisterFromRuntime() |
可以通过多路复用 |
ValidOps() |
返回一个操作集,用于标识此通道支持的操作。 |
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() |
可以通过多路复用 |
IJavaPeerable.DisposeUnlessReferenced() |
可以通过多路复用 |
IJavaPeerable.Finalized() |
可以通过多路复用 |
IJavaPeerable.JniManagedPeerState |
可以通过多路复用 |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
可以通过多路复用 |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
可以通过多路复用 |
IJavaPeerable.SetPeerReference(JniObjectReference) |
可以通过多路复用 |
扩展方法
JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
JavaCast<TResult>(IJavaObject) |
可以通过多路复用 |
GetJniTypeName(IJavaPeerable) |
可以通过多路复用 |