Share via


AsynchronousChannelGroup 类

定义

用于资源共享的异步通道分组。

[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
继承
AsynchronousChannelGroup
属性

注解

用于资源共享的异步通道分组。

异步通道组封装处理所启动 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.AsynchronousChannelGroupJava 文档。

此页面的部分内容是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的术语使用。

构造函数

AsynchronousChannelGroup(AsynchronousChannelProvider)

初始化此类的新实例。

AsynchronousChannelGroup(IntPtr, JniHandleOwnership)

用于资源共享的异步通道分组。

属性

Class

返回此 Object的运行时类。

(继承自 Object)
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)

用于资源共享的异步通道分组。

适用于