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類別的完整名稱。< 類別會使用系統類別載入器載入並具現化。 叫用 Factory java.util.concurrent.ThreadFactory#newThread newThread 的 方法,為預設群組的線程集區建立每個線程。 如果載入和具現化屬性值的程序失敗,則會在建構預設群組期間擲回未指定的錯誤。 </td></tr 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 <notified/em>或<em>interrupted</em> 來喚醒它。<> (繼承來源 Object) |
| Wait(Int64, Int32) |
讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。 (繼承來源 Object) |
| Wait(Int64) |
讓目前的線程等到喚醒為止,通常是因為 <em>notified</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) |
異步通道的群組,用於資源分享。 |