次の方法で共有


ForkJoinPool クラス

定義

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

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

注釈

s ExecutorService を実行 ForkJoinTaskするための 1 つ。 A ForkJoinPool は、クライアント以外ForkJoinTask からの送信および管理および監視操作のエントリ ポイントを提供します。

他の種類とは異なるのはForkJoinPool、主に em>work-stealing</em> を使用<することで異なります。プール内のすべてのスレッドは、プールに送信されたタスクや、他のアクティブなタスクによって作成されたタスクの検索と実行を試みます (存在しない場合は、最終的に作業の待機をブロックExecutorServiceします)。 これにより、ほとんどのタスクが他のサブタスク (ほとんどの ForkJoinTaskタスクと同様) を生成する場合や、外部クライアントから多数の小さなタスクがプールに送信された場合に効率的な処理が可能になります。 特に、コンストラクターで em asyncMode</em> を true に設定<する場合は、ForkJoinPool参加しないイベント スタイルのタスクで使用する場合にも s が適している場合>があります。 すべてのワーカー スレッドは set trueThread#isDaemon初期化されます。

静的 #commonPool() は、ほとんどのアプリケーションで使用でき、適切です。 共通プールは、指定されたプールに明示的に送信されていない ForkJoinTask によって使用されます。 一般的なプールを使用すると、通常、リソースの使用量が削減されます (そのスレッドは、非使用期間中にゆっくりと回収され、その後の使用時に復元されます)。

個別のプールまたはカスタム プールを必要とするアプリケーションの場合、 ForkJoinPool a は、指定されたターゲット並列処理レベルで構築できます。既定では、使用可能なプロセッサの数と同じです。 プールは、内部ワーカー スレッドを動的に追加、中断、または再開することで、一部のタスクが他のタスクへの参加を待機している間にストールしている場合でも、十分なアクティブ (または使用可能) スレッドを維持しようとします。 ただし、I/O またはその他のアンマネージ同期がブロックされている場合、このような調整は保証されません。 入れ子になった ManagedBlocker インターフェイスを使用すると、対応する同期の種類を拡張できます。 既定のポリシーは、クラス ThreadPoolExecutorに記載されているものに対応するパラメーターを持つコンストラクターを使用してオーバーライドできます。

このクラスには、実行およびライフサイクル制御メソッドに加えて、フォーク/参加アプリケーションの開発、チューニング、監視に役立つ状態チェック メソッド (たとえば #getStealCount) が用意されています。 また、メソッド #toString は、非公式の監視に便利な形式でプールの状態の兆候を返します。

他の ExecutorService の場合と同様に、次の表にまとめられた 3 つの主要なタスク実行メソッドがあります。 これらは主に、現在のプールでフォーク/結合の計算にまだ関与していないクライアントによって使用されるように設計されています。 これらのメソッドの主な形式は、インスタンスを ForkJoinTask受け入れますが、オーバーロードされたフォームでは、プレーン Runnableまたは Callableベースのアクティビティの混合実行も可能です。 ただし、プールで既に実行されているタスクは、通常、通常結合されていない非同期イベント スタイルのタスクを使用しない限り、代わりにテーブルに記載されている計算内フォームを使用する必要があります。その場合、メソッドの選択にほとんど違いはありません。

<table class="plain">caption Summary of task execution methods</caption><tr><td></td><th scope="col"> Call from non-fork/join clients</th th<>scope="col"> Call from within fork/join computations</th></tr tr><><th scope="row" style="text-align:left"> Arrange async execution</th><td><#execute(ForkJoinTask)/td><td>ForkJoinTask#fork</td/td>><</tr><tr>th scope="row" style="text-align:left"> Await and obtain result</th><td><#invoke(ForkJoinTask)/td>ForkJoinTask#invoke<<>/td></tr tr<>><th scope="row" style="text-align:left"> Exec を配置し、Future</th><td<>#submit(ForkJoinTask)/td td>>ForkJoinTask#fork< を取得します (ForkJoinTasks <em>are</em> Futures)</td></tr<>/table<>

共通プールの構築に使用するパラメーターは、System#getProperty システム プロパティ <を設定することによって制御できます。ul><li>java.util.concurrent.ForkJoinPool.common.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 スレッドを提供するファクトリを使用します。

これらの設定を確立する際にエラーが発生すると、既定のパラメーターが使用されます。 parallelism プロパティを 0 に設定するか、または返 nullされる可能性があるファクトリを使用することで、共通プール内のスレッドの使用を無効または制限することができます。 ただし、これを行うと、結合されていないタスクが実行されない可能性があります。

<b>実装に関する注意事項:</b> この実装では、実行中のスレッドの最大数が 32767 に制限されます。 最大数 IllegalArgumentExceptionを超えるプールの作成を試みます。

この実装では、送信されたタスク (つまり、スロー RejectedExecutionException) は、プールがシャットダウンされたとき、または内部リソースが使い果たされた場合にのみ拒否されます。

1.7 で追加されました。

の Java ドキュメントjava.util.concurrent.ForkJoinPool

このページの一部は、Android オープンソース プロジェクトによって作成および共有され、クリエイティブ コモンズ 2.5 属性ライセンスに記載されている条件に従って使用される作業に基づく変更です。

コンストラクター

ForkJoinPool()

他のすべてのパラメーターの ForkJoinPool 既定値を使用して、並列処理と java.lang.Runtime#availableProcessors等しい並列処理を作成します (参照 #ForkJoinPool(int, ForkJoinWorkerThreadFactory, UncaughtExceptionHandler, boolean, int, int, int, Predicate, long, TimeUnit))。

ForkJoinPool(Int32)

ForkJoinPool他のすべてのパラメーターの既定値を使用して、指定された並列処理レベルで a を作成します (参照#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)

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

ForkJoinPool(IntPtr, JniHandleOwnership)

JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。

プロパティ

ActiveThreadCount

現在タスクを盗んでいる、または実行しているスレッドの数の見積もりを返します。

AsyncMode

trueこのプールが、参加しないフォークされたタスクに対してローカルの先入れ先出しスケジュール モードを使用する場合に返します。

Class

この Objectランタイム クラスを返します。

(継承元 Object)
CommonPoolParallelism

共通プールの対象となる並列処理レベルを返します。

DefaultForkJoinWorkerThreadFactory

新しい ForkJoinWorkerThread を作成します。

Factory

新しいワーカーの構築に使用されるファクトリを返します。

Handle

基になる Android インスタンスへのハンドル。

(継承元 Object)
HasQueuedSubmissions

trueまだ実行を開始していないタスクがこのプールに送信された場合に返します。

IsQuiescent

trueすべてのワーカー スレッドが現在アイドル状態の場合に返します。

IsShutdown

trueこのプールがシャットダウンされた場合に返します。

IsTerminated

シャットダウン後 true にすべてのタスクが完了した場合に返します。

IsTerminating

true終了のプロセスが開始されたが、まだ完了していない場合に返します。

JniIdentityHashCode

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

(継承元 Object)
JniPeerMembers

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

Parallelism

このプールの対象となる並列処理レベルを返します。

PeerReference

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

(継承元 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)

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

(継承元 AbstractExecutorService)
Clone()

このオブジェクトのコピーを作成して返します。

(継承元 Object)
CommonPool()

共通プール インスタンスを返します。

Dispose()

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

(継承元 Object)
Dispose(Boolean)

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

(継承元 Object)
DrainTasksTo(ICollection<ForkJoinTask>)

キューのスケジュール設定から、実行されていない送信済みタスクとフォーク済みタスクをすべて削除し、実行状態を変更せずに、指定されたコレクションに追加します。

Equals(Object)

他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。

(継承元 Object)
Execute(ForkJoinTask)

指定されたタスクの (非同期) 実行を配置します。

Execute(IRunnable)
GetHashCode()

オブジェクトのハッシュ コード値を返します。

(継承元 Object)
Invoke(ForkJoinTask)

指定されたタスクを実行し、完了時にその結果を返します。

InvokeAll(ICollection)

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

(継承元 AbstractExecutorService)
InvokeAll(ICollection, Int64, TimeUnit)

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

(継承元 AbstractExecutorService)
InvokeAny(ICollection)

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

(継承元 AbstractExecutorService)
InvokeAny(ICollection, Int64, TimeUnit)

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

(継承元 AbstractExecutorService)
JavaFinalize()

オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。

(継承元 Object)
ManagedBlock(ForkJoinPool+IManagedBlocker)

特定のブロックしている可能性があるタスクを実行します。

NewTaskFor(ICallable)

指定された呼び出し可能タスクの a RunnableFuture を返します。

(継承元 AbstractExecutorService)
NewTaskFor(IRunnable, Object)

指定された実行可能値と既定値の a RunnableFuture を返します。

(継承元 AbstractExecutorService)
Notify()

このオブジェクトのモニターで待機している 1 つのスレッドを起動します。

(継承元 Object)
NotifyAll()

このオブジェクトのモニターで待機しているすべてのスレッドを起動します。

(継承元 Object)
PollSubmission()

次に実行されていない申請が使用可能な場合は、削除して返します。

SetHandle(IntPtr, JniHandleOwnership)

Handle プロパティを設定します。

(継承元 Object)
Shutdown()

以前に送信されたタスクが実行される順序付けされたシャットダウンを開始する可能性がありますが、新しいタスクは受け入れされません。

ShutdownNow()

すべてのタスクを取り消したり停止したり、その後に送信されたすべてのタスクを拒否しようとしたりする可能性があります。

Submit(ForkJoinTask)

ForkJoinTask を実行用に送信します。

Submit(ICallable)

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

(継承元 AbstractExecutorService)
Submit(IRunnable)

実行可能タスクを実行用に送信し、そのタスクを表す Future を返します。

(継承元 AbstractExecutorService)
Submit(IRunnable, Object)

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

(継承元 AbstractExecutorService)
ToArray<T>()

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

(継承元 Object)
ToString()

オブジェクトの文字列表現を返します。

(継承元 Object)
UnregisterFromRuntime()

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

(継承元 Object)
Wait()

現在のスレッドが目覚めるまで待機させます。通常<は、通知<>/em> または <em>割り込み/em> を受け<取ります。

(継承元 Object)
Wait(Int64)

現在のスレッドが目覚めるまで待機します。通常<><は、通知/em> または <em>中断</em> によって、または一定のリアルタイムが経過するまで待機します。

(継承元 Object)
Wait(Int64, Int32)

現在のスレッドが目覚めるまで待機します。通常<><は、通知/em> または <em>中断</em> によって、または一定のリアルタイムが経過するまで待機します。

(継承元 Object)

明示的なインターフェイスの実装

IJavaPeerable.Disposed()

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

(継承元 Object)
IJavaPeerable.DisposeUnlessReferenced()

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

(継承元 Object)
IJavaPeerable.Finalized()

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

(継承元 Object)
IJavaPeerable.JniManagedPeerState

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

(継承元 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

(継承元 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

(継承元 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

(継承元 Object)

拡張メソッド

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

GetJniTypeName(IJavaPeerable)

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

AwaitTerminationAsync(IExecutorService, Int64, TimeUnit)

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

InvokeAnyAsync(IExecutorService, ICollection)

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

InvokeAnyAsync(IExecutorService, ICollection, Int64, TimeUnit)

s ExecutorService を実行 ForkJoinTaskするための 1 つ。

適用対象