AsynchronousChannelGroup 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
用于资源共享的异步通道分组。
[Android.Runtime.Register("java/nio/channels/AsynchronousChannelGroup", ApiSince=26, DoNotGenerateAcw=true)]
public abstract class AsynchronousChannelGroup : Java.Lang.Object
[<Android.Runtime.Register("java/nio/channels/AsynchronousChannelGroup", ApiSince=26, DoNotGenerateAcw=true)>]
type AsynchronousChannelGroup = class
inherit Object
- 继承
- 属性
注解
用于资源共享的异步通道分组。
异步通道组封装处理所启动 AsynchronousChannel asynchronous channels
的、绑定到该组的 I/O 操作完成所需的机制。 组具有关联的线程池,任务将提交到该池以处理 I/O 事件并调度到 CompletionHandler completion-handlers
该池,该池使用对组中的通道执行的异步操作的结果。 除了处理 I/O 事件外,共用线程还可以执行支持执行异步 I/O 操作所需的其他任务。
异步通道组是通过调用 #withFixedThreadPool withFixedThreadPool
此处定义的 或 #withCachedThreadPool withCachedThreadPool
方法创建的。 通道在构造通道时通过指定组绑定到组。 关联的线程池由<>组拥有</em>;该组的终止会导致关联的线程池关闭。
除了显式创建的组外,Java 虚拟机还维护系统范围内<>自动构造的默认 group</em>。 未在构造时指定组的异步通道绑定到默认组。 默认组具有关联的线程池,可根据需要创建新线程。 默认组可以通过下表中定义的系统属性进行配置。 java.util.concurrent.ThreadFactory ThreadFactory
如果未配置默认组的 ,则默认组的共用线程为Thread#isDaemon daemon
线程。
<table class=“striped”><描述文字 style=“display:none:”>System properties</描述文字<>thead<>tr><th scope=“col”>System property</th<>th scope=“col”>Description</th></tr<>/thead><tbody<>tr><th scope=“row”<java.nio.channels.DefaultThreadPool.threadFactory
>/th><td> 此属性的值取为具体java.util.concurrent.ThreadFactory ThreadFactory
类的完全限定名称。 类使用系统类加载程序进行加载并实例化。 调用工厂的 java.util.concurrent.ThreadFactory#newThread newThread
方法为默认组的线程池创建每个线程。 如果加载和实例化 属性值的过程失败,则在构造默认组期间将引发未指定的错误。 </td></tr><<>th scope=“row”java.nio.channels.DefaultThreadPool.initialSize
<>/th><td> 默认组的参数值 initialSize
(请参阅 #withCachedThreadPool withCachedThreadPool
) 。 属性的值作为 String
初始 size 参数的 Integer
表示形式。 如果无法将值解析为 , Integer
则会导致在构造默认组期间引发未指定的错误。 </td></tr></tbody></table>
“threading”><h2>Threading</h2>
在绑定到组的通道上启动的 I/O 操作的完成处理程序保证由组中的一个共用线程调用。 这可确保完成处理程序由具有预期 <em>identity</em> 的线程运行。
如果 I/O 操作立即完成,并且启动线程是组中的共用线程之一,则启动线程可以直接调用完成处理程序。 为了避免堆栈溢出,实现可能会对线程堆栈上的激活数施加限制。 某些 I/O 操作可能会禁止启动线程直接调用完成处理程序, (请参阅 AsynchronousServerSocketChannel#accept(Object,CompletionHandler) accept
) 。
“shutdown”><h2>关闭和终止</h2>
方法 #shutdown() shutdown
用于启动 <组的 em>有序关闭</em> 。 有序关闭将组标记为关闭;进一步尝试构造绑定到组的通道将引发 ShutdownChannelGroupException
。 可以使用 方法测试 #isShutdown() isShutdown
组是否关闭。 关闭后,当绑定到组><的所有异步通道关闭、所有主动执行的完成处理程序都运行到完成,并且释放组使用的资源时,组 em 将终止</>em。 不会尝试停止或中断正在执行完成处理程序的线程。 方法 #isTerminated() isTerminated
用于测试组是否已终止,方法 #awaitTermination awaitTermination
可用于阻止组,直到组终止。
方法 #shutdownNow() shutdownNow
可用于启动 <组的 em>强制关闭</em> 。 除了按顺序关闭执行的操作外, shutdownNow
方法还会关闭组中所有打开的通道,就像通过调用 方法一 AsynchronousChannel#close close
样。
在 1.7 中添加。
的 java.nio.channels.AsynchronousChannelGroup
Java 文档。
此页面的部分内容是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的术语使用。
构造函数
AsynchronousChannelGroup(AsynchronousChannelProvider) |
初始化此类的新实例。 |
AsynchronousChannelGroup(IntPtr, JniHandleOwnership) |
用于资源共享的异步通道分组。 |
属性
Class |
返回此 |
Handle |
基础 Android 实例的句柄。 (继承自 Object) |
IsShutdown |
用于资源共享的异步通道分组。 |
IsTerminated |
用于资源共享的异步通道分组。 |
JniIdentityHashCode |
用于资源共享的异步通道分组。 (继承自 Object) |
JniPeerMembers |
用于资源共享的异步通道分组。 |
PeerReference |
用于资源共享的异步通道分组。 (继承自 Object) |
ThresholdClass |
用于资源共享的异步通道分组。 |
ThresholdType |
用于资源共享的异步通道分组。 |
方法
AwaitTermination(Int64, TimeUnit) |
等待组的终止。 |
Clone() |
创建并返回此对象的副本。 (继承自 Object) |
Dispose() |
用于资源共享的异步通道分组。 (继承自 Object) |
Dispose(Boolean) |
用于资源共享的异步通道分组。 (继承自 Object) |
Equals(Object) |
指示其他某个对象是否“等于”此对象。 (继承自 Object) |
GetHashCode() |
返回对象的哈希代码值。 (继承自 Object) |
JavaFinalize() |
当垃圾回收确定不再引用对象时,由对象上的垃圾回收器调用。 (继承自 Object) |
Notify() |
唤醒正在等待此对象的监视器的单个线程。 (继承自 Object) |
NotifyAll() |
唤醒正在等待此对象的监视器的所有线程。 (继承自 Object) |
Provider() |
返回创建此通道组的提供程序。 |
SetHandle(IntPtr, JniHandleOwnership) |
设置 Handle 属性。 (继承自 Object) |
Shutdown() |
启动组的有序关闭。 |
ShutdownNow() |
关闭组并关闭组中所有打开的频道。 |
ToArray<T>() |
用于资源共享的异步通道分组。 (继承自 Object) |
ToString() |
返回对象的字符串表示形式。 (继承自 Object) |
UnregisterFromRuntime() |
用于资源共享的异步通道分组。 (继承自 Object) |
Wait() |
导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>。<> (继承自 Object) |
Wait(Int64) |
导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<> (继承自 Object) |
Wait(Int64, Int32) |
导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<> (继承自 Object) |
WithCachedThreadPool(IExecutorService, Int32) |
创建具有给定线程池的异步通道组,该池可根据需要创建新线程。 |
WithFixedThreadPool(Int32, IThreadFactory) |
创建具有固定线程池的异步通道组。 |
WithThreadPool(IExecutorService) |
使用给定线程池创建异步通道组。 |
显式接口实现
IJavaPeerable.Disposed() |
用于资源共享的异步通道分组。 (继承自 Object) |
IJavaPeerable.DisposeUnlessReferenced() |
用于资源共享的异步通道分组。 (继承自 Object) |
IJavaPeerable.Finalized() |
用于资源共享的异步通道分组。 (继承自 Object) |
IJavaPeerable.JniManagedPeerState |
用于资源共享的异步通道分组。 (继承自 Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
用于资源共享的异步通道分组。 (继承自 Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
用于资源共享的异步通道分组。 (继承自 Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
用于资源共享的异步通道分组。 (继承自 Object) |
扩展方法
JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
JavaCast<TResult>(IJavaObject) |
用于资源共享的异步通道分组。 |
GetJniTypeName(IJavaPeerable) |
用于资源共享的异步通道分组。 |