Exchanger クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
スレッドがペア内の要素をペアにしてスワップできる同期ポイント。
[Android.Runtime.Register("java/util/concurrent/Exchanger", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "V" })]
public class Exchanger : Java.Lang.Object
[<Android.Runtime.Register("java/util/concurrent/Exchanger", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "V" })>]
type Exchanger = class
inherit Object
- 継承
- 属性
注釈
スレッドがペア内の要素をペアにしてスワップできる同期ポイント。 各スレッドは、 #exchange exchange メソッドへのエントリでオブジェクトを提示し、パートナー スレッドと一致し、返されたパートナーのオブジェクトを受け取ります。 交換体は、 SynchronousQueueの双方向形式として見ることができます。 交換体は、遺伝的アルゴリズムやパイプライン設計などのアプリケーションで役立つ場合があります。
<b>Sample Usage:</b>Exchanger を使用してスレッド間でバッファーをスワップするクラスのハイライトを次に示します。バッファーを満たすスレッドは、必要なときに空にしたばかりのものを取得し、バッファーを空にするスレッドに渡します。
{@code
class FillAndEmpty {
Exchanger<DataBuffer> exchanger = new Exchanger<>();
DataBuffer initialEmptyBuffer = ...; // a made-up type
DataBuffer initialFullBuffer = ...;
class FillingLoop implements Runnable {
public void run() {
DataBuffer currentBuffer = initialEmptyBuffer;
try {
while (currentBuffer != null) {
addToBuffer(currentBuffer);
if (currentBuffer.isFull())
currentBuffer = exchanger.exchange(currentBuffer);
}
} catch (InterruptedException ex) { ... handle ...}
}
}
class EmptyingLoop implements Runnable {
public void run() {
DataBuffer currentBuffer = initialFullBuffer;
try {
while (currentBuffer != null) {
takeFromBuffer(currentBuffer);
if (currentBuffer.isEmpty())
currentBuffer = exchanger.exchange(currentBuffer);
}
} catch (InterruptedException ex) { ... handle ...}
}
}
void start() {
new Thread(new FillingLoop()).start();
new Thread(new EmptyingLoop()).start();
}
}}
メモリ整合性効果: Exchangerを介してオブジェクトを正常に交換するスレッドのペアごとに、各スレッド内の exchange() の前のアクション <i>happen-before</i> 他のスレッドの対応する exchange() からの戻り値に続くアクションです。
1\.5 で追加されました。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
コンストラクター
| 名前 | 説明 |
|---|---|
| Exchanger() |
新しい交換体を作成します。 |
| Exchanger(IntPtr, JniHandleOwnership) |
JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。 |
プロパティ
| 名前 | 説明 |
|---|---|
| Class |
この |
| Handle |
基になる Android インスタンスへのハンドル。 (継承元 Object) |
| JniIdentityHashCode |
相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。 (継承元 Object) |
| JniManagedPeerState |
スレッドがペア内の要素をペアにしてスワップできる同期ポイント。 (継承元 JavaObject) |
| JniPeerMembers |
スレッドがペア内の要素をペアにしてスワップできる同期ポイント。 |
| PeerReference |
このJava ピアの JNI オブジェクト参照を取得します。 (継承元 Object) |
| ThresholdClass |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 |
| ThresholdType |
この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。 |
メソッド
| 名前 | 説明 |
|---|---|
| Clone() |
このオブジェクトのコピーを作成して返します。 (継承元 Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
スレッドがペア内の要素をペアにしてスワップできる同期ポイント。 (継承元 JavaObject) |
| Dispose() |
このJava ピアによって保持されているリソースを解放します。 (継承元 Object) |
| Dispose(Boolean) |
このJava ピアによって保持されているリソースを解放します。 (継承元 Object) |
| DisposeUnlessReferenced() |
スレッドがペア内の要素をペアにしてスワップできる同期ポイント。 (継承元 JavaObject) |
| Equals(Object) |
スレッドがペア内の要素をペアにしてスワップできる同期ポイント。 (継承元 JavaObject) |
| Equals(Object) |
他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。 (継承元 Object) |
| Exchange(Object, Int64, TimeUnit) |
別のスレッドがこの交換ポイントに到達するまで待機し (現在のスレッドが Thread#interrupt interrupted または指定された待機時間が経過した場合を除く)、指定されたオブジェクトを転送し、そのオブジェクトを受け取ります。 |
| Exchange(Object) |
別のスレッドがこの交換ポイントに到達するまで待機します (現在のスレッドが Thread#interrupt が中断されている場合を除く)。その後、指定されたオブジェクトを転送し、そのオブジェクトを受け取ります。 |
| GetHashCode() |
オブジェクトのハッシュ コード値を返します。 (継承元 Object) |
| JavaFinalize() |
古い.
オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。 (継承元 Object) |
| Notify() |
このオブジェクトのモニターで待機している 1 つのスレッドを起動します。 (継承元 Object) |
| NotifyAll() |
このオブジェクトのモニターで待機しているすべてのスレッドを起動します。 (継承元 Object) |
| SetHandle(IntPtr, JniHandleOwnership) |
Handle プロパティを設定します。 (継承元 Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
スレッドがペア内の要素をペアにしてスワップできる同期ポイント。 (継承元 JavaObject) |
| ToArray<T>() |
このJava配列ラッパーからマネージド配列を作成します。 (継承元 Object) |
| ToString() |
オブジェクトの文字列形式を返します。 (継承元 Object) |
| UnregisterFromRuntime() |
相互運用ランタイムからこのJava ピアの登録を解除します。 (継承元 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) |
明示的なインターフェイスの実装
| 名前 | 説明 |
|---|---|
| IJavaPeerable.Disposed() |
スレッドがペア内の要素をペアにしてスワップできる同期ポイント。 (継承元 JavaObject) |
| IJavaPeerable.Finalized() |
スレッドがペア内の要素をペアにしてスワップできる同期ポイント。 (継承元 JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
スレッドがペア内の要素をペアにしてスワップできる同期ポイント。 (継承元 JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
スレッドがペア内の要素をペアにしてスワップできる同期ポイント。 (継承元 JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
スレッドがペア内の要素をペアにしてスワップできる同期ポイント。 (継承元 JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
スレッドがペア内の要素をペアにしてスワップできる同期ポイント。 (継承元 JavaObject) |
拡張メソッド
| 名前 | 説明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
インスタンス |
| JavaAs<TResult>(IJavaPeerable) |
|
| JavaCast<TResult>(IJavaObject) |
Android ランタイムチェック型変換を実行します。 |
| JavaCast<TResult>(IJavaObject) |
スレッドがペア内の要素をペアにしてスワップできる同期ポイント。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
|