CyclicBarrier クラス

定義

一連のスレッドが相互に共通のバリア ポイントに到達するまで待機できるようにする同期支援。

[Android.Runtime.Register("java/util/concurrent/CyclicBarrier", DoNotGenerateAcw=true)]
public class CyclicBarrier : Java.Lang.Object
[<Android.Runtime.Register("java/util/concurrent/CyclicBarrier", DoNotGenerateAcw=true)>]
type CyclicBarrier = class
    inherit Object
継承
CyclicBarrier
属性

注釈

一連のスレッドが相互に共通のバリア ポイントに到達するまで待機できるようにする同期支援。 CyclicBarriers は、スレッドの固定サイズのパーティを含むプログラムで役立ちます。これは、お互いを待つ必要がある場合があります。 バリアは、待機中のスレッドが解放された後に再利用できるため、em 循環/em> と呼ばれます<。<>

では CyclicBarrier 、バリア ポイントごとに 1 回、パーティの最後のスレッドが到着した後、スレッドが解放される前に実行される省略可能 Runnable なコマンドがサポートされています。 この <em>バリア アクション</em> は、いずれかの当事者が続行する前に共有状態を更新する場合に役立ちます。

<b>サンプル使用法:</b> 並列分解設計でバリアを使用する例を次に示します。

{@code
            class Solver {
              final int N;
              final float[][] data;
              final CyclicBarrier barrier;

              class Worker implements Runnable {
                int myRow;
                Worker(int row) { myRow = row; }
                public void run() {
                  while (!done()) {
                    processRow(myRow);

                    try {
                      barrier.await();
                    } catch (InterruptedException ex) {
                      return;
                    } catch (BrokenBarrierException ex) {
                      return;
                    }
                  }
                }
              }

              public Solver(float[][] matrix) {
                data = matrix;
                N = matrix.length;
                Runnable barrierAction = () -> mergeRows(...);
                barrier = new CyclicBarrier(N, barrierAction);

                List<Thread> threads = new ArrayList<>(N);
                for (int i = 0; i < N; i++) {
                  Thread thread = new Thread(new Worker(i));
                  threads.add(thread);
                  thread.start();
                }

                // wait until done
                for (Thread thread : threads)
                  try {
                    thread.join();
                  } catch (InterruptedException ex) { }
              }
            }}

ここでは、各ワーカー スレッドがマトリックスの行を処理し、すべての行が処理されるまでバリアで待機します。 すべての行が処理されると、指定された Runnable バリア アクションが実行され、行がマージされます。 合併によってソリューションが見つかったと判断された場合は が done()true され、各ワーカーは終了します。

バリア アクションが実行時に中断されているパーティに依存しない場合、パーティ内のスレッドが解放されたときにそのアクションを実行できます。 これを容易にするために、 を #await 呼び出すたびに、バリアにあるそのスレッドの到着インデックスが返されます。 その後、バリア アクションを実行するスレッドを選択できます。次に例を示します。

{@code
            if (barrier.await() == 0) {
              // log the completion of this iteration
            }}

では CyclicBarrier 、同期試行の失敗に対してすべてまたはなし破損モデルが使用されます。中断、失敗、またはタイムアウトのためにスレッドが途中でバリア ポイントを離れると、そのバリア ポイントで待機している他のすべてのスレッドも、異常に経由して BrokenBarrierException 残ります (または InterruptedException 、ほぼ同時に中断された場合も同様)。

メモリ整合性の影響: バリア アクションの一部である i>を<>呼び出すawait()<前のスレッド内のアクションは、他のスレッドの対応する await() から正常に戻った後に発生する前のアクションです。

1\.5 で追加されました。

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

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

コンストラクター

CyclicBarrier(Int32)

指定された数のパーティ (スレッド) が待機しているときにトリップする新しい CyclicBarrier を作成し、バリアがトリップしたときに定義済みのアクションを実行しません。

CyclicBarrier(Int32, IRunnable)

指定された数のパーティ (スレッド) が待機しているときにトリップする新しい CyclicBarrier を作成します。これにより、バリアがトリップしたときに、バリアに入る最後のスレッドによって実行される、指定されたバリア アクションが実行されます。

CyclicBarrier(IntPtr, JniHandleOwnership)

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

プロパティ

Class

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

(継承元 Object)
Handle

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

(継承元 Object)
IsBroken

このバリアが壊れた状態にある場合にクエリを実行します。

JniIdentityHashCode

一連のスレッドが相互に共通のバリア ポイントに到達するまで待機できるようにする同期支援。

(継承元 Object)
JniPeerMembers

一連のスレッドが相互に共通のバリア ポイントに到達するまで待機できるようにする同期支援。

NumberWaiting

バリアで現在待機している関係者の数を返します。

Parties

この障壁を乗り越えるために必要な関係者の数を返します。

PeerReference

一連のスレッドが相互に共通のバリア ポイントに到達するまで待機できるようにする同期支援。

(継承元 Object)
ThresholdClass

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用することを意図したものではありません。

ThresholdType

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用することを意図したものではありません。

メソッド

Await()

すべての #getParties パーティがこのバリアで呼び出 await されるまで待機します。

Await(Int64, TimeUnit)

すべての #getParties パーティがこのバリアで呼び出されるか await 、指定された待機時間が経過するまで待機します。

AwaitAsync()

一連のスレッドが相互に共通のバリア ポイントに到達するまで待機できるようにする同期支援。

AwaitAsync(Int64, TimeUnit)

一連のスレッドが相互に共通のバリア ポイントに到達するまで待機できるようにする同期支援。

Clone()

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

(継承元 Object)
Dispose()

一連のスレッドが相互に共通のバリア ポイントに到達するまで待機できるようにする同期支援。

(継承元 Object)
Dispose(Boolean)

一連のスレッドが相互に共通のバリア ポイントに到達するまで待機できるようにする同期支援。

(継承元 Object)
Equals(Object)

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

(継承元 Object)
GetHashCode()

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

(継承元 Object)
JavaFinalize()

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

(継承元 Object)
Notify()

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

(継承元 Object)
NotifyAll()

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

(継承元 Object)
Reset()

バリアを初期状態にリセットします。

SetHandle(IntPtr, JniHandleOwnership)

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

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

一連のスレッドが相互に共通のバリア ポイントに到達するまで待機できるようにする同期支援。

(継承元 Object)
ToString()

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

(継承元 Object)
UnregisterFromRuntime()

一連のスレッドが相互に共通のバリア ポイントに到達するまで待機できるようにする同期支援。

(継承元 Object)
Wait()

現在のスレッドが起動するまで待機します。通常<>は、通知</em> または <em>割り込み</em によって待機します>。

(継承元 Object)
Wait(Int64)

現在のスレッドが起動するまで待機します。通常<>は、通知</em> または>< em 割り込み</em>、または一定のリアルタイムが経過するまで待機します。

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

現在のスレッドが起動するまで待機します。通常<>は、通知</em> または>< em 割り込み</em>、または一定のリアルタイムが経過するまで待機します。

(継承元 Object)

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

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)

一連のスレッドが相互に共通のバリア ポイントに到達するまで待機できるようにする同期支援。

適用対象