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 虚拟机还维护自动构造的系统范围的 <em 默认组</em>>。 在构造时不指定组的异步通道绑定到默认组。 默认组具有关联的线程池,可根据需要创建新线程。 可以通过下表中定义的系统属性来配置默认组。 如果未配置默认组的 java.util.concurrent.ThreadFactory ThreadFactory 池线程,则默认组的入池线程为 Thread#isDaemon daemon 线程。
<table class=“striped”><caption style=“display:none:”>System properties</caption><thead><tr><th scope=“col”>System property</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 初始大小参数的 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>Shutdown and Termination</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.AsynchronousChannelGroupJava 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
构造函数
| 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, Int32) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。 (继承自 Object) |
| Wait(Int64) |
使当前线程等待直到唤醒,通常是通过 <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) |
用于资源共享的异步通道分组。 |