共用方式為


ForkJoinPool 類別

定義

ExecutorService,用於執行 ForkJoinTasks。

[Android.Runtime.Register("java/util/concurrent/ForkJoinPool", DoNotGenerateAcw=true)]
public class ForkJoinPool : Java.Util.Concurrent.AbstractExecutorService
[<Android.Runtime.Register("java/util/concurrent/ForkJoinPool", DoNotGenerateAcw=true)>]
type ForkJoinPool = class
    inherit AbstractExecutorService
繼承
屬性

備註

ExecutorService,用於執行 ForkJoinTasks。 提供 ForkJoinPool 來自非ForkJoinTask 用戶端之提交的進入點,以及管理和監視作業。

ForkJoinPool與其他類型ExecutorService不同,主要因為採用<em>work-stealing</em> 而有所不同:集區中的所有線程都會嘗試尋找和執行提交至集區和/或由其他使用中工作所建立的工作(最終會封鎖在不存在時等候工作)。 當大部分的工作繁衍其他子工作時, ForkJoinTask以及從外部用戶端提交許多小型工作時,這可讓您有效率地進行處理。 特別是在建構函式中將 em>asyncMode</em> 設定<為 true 時,ForkJoinPools 也可能適合用於從未加入的事件樣式工作。 所有背景工作線程都會使用 Thread#isDaemon set true初始化。

靜態 #commonPool() 可供使用,且適用於大部分的應用程式。 未明確提交至指定集區的任何 ForkJoinTask 會使用通用集區。 使用通用集區通常會減少資源使用量(其線程會在非使用期間緩慢回收,並在後續使用時恢復)。

對於需要個別或自定義集區的應用程式, ForkJoinPool 可以使用指定的目標平行處理原則層級來建構 ;根據預設,等於可用的處理器數目。 集區會嘗試藉由動態新增、暫停或繼續內部背景工作線程來維護足夠的作用中線程(或可用),即使有些工作已停止等候加入其他線程。 不過,在遭到封鎖的 I/O 或其他非受控同步處理時,不保證有這類調整。 巢狀 ManagedBlocker 介面可讓您擴充所容納的同步處理類型。 您可以使用建構函式來覆寫默認原則,其參數對應至 類別 ThreadPoolExecutor中記載的參數。

除了執行和生命週期管理方法之外,這個類別還提供狀態檢查方法(例如 #getStealCount),這些方法旨在協助開發、微調和監視分支/聯結應用程式。 此外,方法 #toString 會以方便的形式傳回集區狀態的指示,以進行非正式監視。

如同其他 ExecutorServices 的情況,下表摘要說明三個主要工作執行方法。 這些設計主要是供尚未參與目前集區中分叉/聯結計算的用戶端使用。 這些方法的主要形式也接受的 ForkJoinTask實例,但多載體也允許混合執行純 Runnable文本或 Callable型活動。 不過,在集區中執行的工作通常應該改用數據表中所列的計算表單,除非使用通常未聯結的異步事件樣式工作,在此情況下,方法的選擇沒有什麼差異。

<table class=“plain”>caption task execution methods</caption<>tr<>td/td><<> th scope=“col”> Call from non-fork/join clients</th<>scope=“col” Call from in fork/join computations</th></tr tr<><>th scope=“row” style=“text-align:left”>> Arrange async execution</th><td<>#execute(ForkJoinTask)/td td/td>>><<ForkJoinTask#fork><</tr><tr>th scope=“row” style=“text-align:left”> Await and obtain result</th><td><#invoke(ForkJoinTask)/td></tdForkJoinTask#invoke<><>/tr tr>><<th scope=“row” style=“text-align:left”> Arrange exec and obtain Future</th><td<>#submit(ForkJoinTask)/td>><ForkJoinTask#fork td (ForkJoinTasks <em>are</em> Futures)</td></tr<>/table<>

用來建構通用集區的參數可藉由設定下列 System#getProperty 系統屬性來控制: <ul><li>java.util.concurrent.ForkJoinPool.common.parallelism - parallelism 層級、非負整數 <li>java.util.concurrent.ForkJoinPool.common.threadFactory - 的 ForkJoinWorkerThreadFactory類別名稱。 ClassLoader#getSystemClassLoader() 系統類別載入器是用來載入這個類別。 <li>java.util.concurrent.ForkJoinPool.common.exceptionHandler - 的 UncaughtExceptionHandler類別名稱。 ClassLoader#getSystemClassLoader() 系統類別載入器是用來載入這個類別。 <li>java.util.concurrent.ForkJoinPool.common.maximumSpares - 允許額外線程維持目標平行處理原則的最大數目(預設值 256)。 </ul> 如果未透過系統屬性提供任何線程處理站,則通用集區會使用使用系統類別載入器作為 Thread#getContextClassLoader() 線程內容類別載入器的處理站。 此外,如果 SecurityManager 存在,則通用集區會使用未 Permissions 啟用的處理站提供線程。

在建立這些設定時發生任何錯誤時,會使用預設參數。 將平行處理原則屬性設定為零,以及/或使用可能傳回 null的處理站,可以停用或限制在通用集區中使用線程。 不過,這樣做可能會導致永遠不會執行未加入的工作。

<b>實作注意事項:</b> 此實作會將執行中的線程數目上限限制為 32767。 嘗試建立大於 的最大數目結果的集區 IllegalArgumentException

只有在集區關閉或內部資源已用盡時, RejectedExecutionException此實作才會拒絕送出的工作(也就是擲回)。

已在1.7中新增。

java.util.concurrent.ForkJoinPoolJava 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

建構函式

ForkJoinPool()

ForkJoinPool建立平行處理原則等於 java.lang.Runtime#availableProcessors的 ,使用所有其他參數的預設值 (請參閱 #ForkJoinPool(int, ForkJoinWorkerThreadFactory, UncaughtExceptionHandler, boolean, int, int, int, Predicate, long, TimeUnit))。

ForkJoinPool(Int32)

ForkJoinPool使用指示的平行處理原則層級建立 ,並針對所有其他參數使用預設值 (請參閱 #ForkJoinPool(int, ForkJoinWorkerThreadFactory, UncaughtExceptionHandler, boolean, int, int, int, Predicate, long, TimeUnit))。

ForkJoinPool(Int32, ForkJoinPool+IForkJoinWorkerThreadFactory, Thread+IUncaughtExceptionHandler, Boolean)

ForkJoinPool使用 #defaultForkJoinWorkerThreadFactory 預設線程處理站、無 UncaughtExceptionHandler 和非異步 LIFO 處理模式,建立平行處理原則等於 java.lang.Runtime#availableProcessors的 。

ForkJoinPool(Int32, ForkJoinPool+IForkJoinWorkerThreadFactory, Thread+IUncaughtExceptionHandler, Boolean, Int32, Int32, Int32, IPredicate, Int64, TimeUnit)

ExecutorService,用於執行 ForkJoinTasks。

ForkJoinPool(IntPtr, JniHandleOwnership)

建立 JNI 物件的 Managed 表示法時使用的建構函式;由運行時間呼叫。

屬性

ActiveThreadCount

傳回目前正在竊取或執行工作的線程數目估計。

AsyncMode

true如果這個集區使用永不加入之分岔工作的本機先出排程模式,則傳回 。

Class

傳回這個 Object的運行時間類別。

(繼承來源 Object)
CommonPoolParallelism

傳回通用集區的目標平行處理原則層級。

DefaultForkJoinWorkerThreadFactory

建立新的 ForkJoinWorkerThread。

Factory

傳回用來建構新背景工作角色的處理站。

Handle

基礎Android實例的句柄。

(繼承來源 Object)
HasQueuedSubmissions

如果有任何工作提交至此集區尚未開始執行,則傳 true 回 。

IsQuiescent

如果所有的背景工作線程目前處於閒置狀態, 則傳 true 回 。

IsShutdown

如果此集區已關閉,則傳 true 回 。

IsTerminated

如果所有工作在關閉之後都已完成,則傳 true 回 。

IsTerminating

如果終止程式已經開始但尚未完成,則傳 true 回 。

JniIdentityHashCode

ExecutorService,用於執行 ForkJoinTasks。

(繼承來源 Object)
JniPeerMembers

ExecutorService,用於執行 ForkJoinTasks。

Parallelism

傳回這個集區的目標平行處理原則層級。

PeerReference

ExecutorService,用於執行 ForkJoinTasks。

(繼承來源 Object)
PoolSize

傳回已啟動但尚未終止的背景工作線程數目。

QueuedSubmissionCount

傳回已提交至此集區尚未執行之工作數目的估計值。

QueuedTaskCount

傳回背景工作線程目前在佇列中保留的工作總數的估計值(但不包括提交至尚未執行之集區的工作)。

RunningThreadCount

傳回未封鎖等候加入工作或其他受管理同步處理之背景工作線程數目的估計值。

StealCount

傳回由提交者以外的線程所執行之已完成工作的總數估計。

ThresholdClass

此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。

ThresholdType

此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。

UncaughtExceptionHandler

傳回因執行工作時發生無法復原錯誤而終止的內部背景工作線程處理程式。

方法

AwaitQuiescence(Int64, TimeUnit)

如果由在此集區中作業的 ForkJoinTask 呼叫,則相當於 。ForkJoinTask#helpQuiesce

AwaitTermination(Int64, TimeUnit)

封鎖,直到所有工作在關機要求之後完成執行,或發生逾時,或目前的線程中斷,只要先發生。

AwaitTerminationAsync(Int64, TimeUnit)

ExecutorService,用於執行 ForkJoinTasks。

(繼承來源 AbstractExecutorService)
Clone()

建立並傳回這個 對象的複本。

(繼承來源 Object)
CommonPool()

傳回通用集區實例。

Dispose()

ExecutorService,用於執行 ForkJoinTasks。

(繼承來源 Object)
Dispose(Boolean)

ExecutorService,用於執行 ForkJoinTasks。

(繼承來源 Object)
DrainTasksTo(ICollection<ForkJoinTask>)

從排程佇列中移除所有可用的未執行和分叉工作,並將其新增至指定的集合,而不會改變其執行狀態。

Equals(Object)

指出其他物件是否「等於」這個物件。

(繼承來源 Object)
Execute(ForkJoinTask)

安排指定工作的 (異步) 執行。

Execute(IRunnable)
GetHashCode()

傳回此物件的雜湊碼值。

(繼承來源 Object)
Invoke(ForkJoinTask)

執行指定的工作,並在完成時傳回其結果。

InvokeAll(ICollection)

ExecutorService,用於執行 ForkJoinTasks。

(繼承來源 AbstractExecutorService)
InvokeAll(ICollection, Int64, TimeUnit)

ExecutorService,用於執行 ForkJoinTasks。

(繼承來源 AbstractExecutorService)
InvokeAny(ICollection)

ExecutorService,用於執行 ForkJoinTasks。

(繼承來源 AbstractExecutorService)
InvokeAny(ICollection, Int64, TimeUnit)

ExecutorService,用於執行 ForkJoinTasks。

(繼承來源 AbstractExecutorService)
JavaFinalize()

當垃圾收集決定不再參考物件時,垃圾收集行程在 物件上呼叫。

(繼承來源 Object)
ManagedBlock(ForkJoinPool+IManagedBlocker)

執行指定的可能封鎖工作。

NewTaskFor(ICallable)

RunnableFuture 回指定可呼叫工作的 。

(繼承來源 AbstractExecutorService)
NewTaskFor(IRunnable, Object)

RunnableFuture 回指定可執行與預設值的 。

(繼承來源 AbstractExecutorService)
Notify()

喚醒正在等候此物件監視器的單一線程。

(繼承來源 Object)
NotifyAll()

喚醒正在等候此物件監視器的所有線程。

(繼承來源 Object)
PollSubmission()

如果有可用的提交,請移除並傳回下一個未執行提交。

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
Shutdown()

可能會起始有序關機,在其中執行先前提交的工作,但不會接受任何新工作。

ShutdownNow()

可能嘗試取消和/或停止所有工作,並拒絕所有後續提交的工作。

Submit(ForkJoinTask)

提交 ForkJoinTask 來執行。

Submit(ICallable)

ExecutorService,用於執行 ForkJoinTasks。

(繼承來源 AbstractExecutorService)
Submit(IRunnable)

提交可執行的工作以供執行,並傳回代表該工作的 Future。

(繼承來源 AbstractExecutorService)
Submit(IRunnable, Object)

ExecutorService,用於執行 ForkJoinTasks。

(繼承來源 AbstractExecutorService)
ToArray<T>()

ExecutorService,用於執行 ForkJoinTasks。

(繼承來源 Object)
ToString()

傳回物件的字串表示。

(繼承來源 Object)
UnregisterFromRuntime()

ExecutorService,用於執行 ForkJoinTasks。

(繼承來源 Object)
Wait()

讓目前線程等候直到喚醒為止,通常是藉由em <notified/em>或<em>interrupted</em> 來喚醒它。<>

(繼承來源 Object)
Wait(Int64)

讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。

(繼承來源 Object)
Wait(Int64, Int32)

讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。

(繼承來源 Object)

明確介面實作

IJavaPeerable.Disposed()

ExecutorService,用於執行 ForkJoinTasks。

(繼承來源 Object)
IJavaPeerable.DisposeUnlessReferenced()

ExecutorService,用於執行 ForkJoinTasks。

(繼承來源 Object)
IJavaPeerable.Finalized()

ExecutorService,用於執行 ForkJoinTasks。

(繼承來源 Object)
IJavaPeerable.JniManagedPeerState

ExecutorService,用於執行 ForkJoinTasks。

(繼承來源 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

ExecutorService,用於執行 ForkJoinTasks。

(繼承來源 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

ExecutorService,用於執行 ForkJoinTasks。

(繼承來源 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

ExecutorService,用於執行 ForkJoinTasks。

(繼承來源 Object)

擴充方法

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

ExecutorService,用於執行 ForkJoinTasks。

GetJniTypeName(IJavaPeerable)

ExecutorService,用於執行 ForkJoinTasks。

AwaitTerminationAsync(IExecutorService, Int64, TimeUnit)

ExecutorService,用於執行 ForkJoinTasks。

InvokeAnyAsync(IExecutorService, ICollection)

ExecutorService,用於執行 ForkJoinTasks。

InvokeAnyAsync(IExecutorService, ICollection, Int64, TimeUnit)

ExecutorService,用於執行 ForkJoinTasks。

適用於