言語

ForkJoinPool.IManagedBlocker インターフェイス

定義

ForkJoinPoolで実行されているタスクのマネージド 並列処理を拡張するためのインターフェイス。

[Android.Runtime.Register("java/util/concurrent/ForkJoinPool$ManagedBlocker", "", "Java.Util.Concurrent.ForkJoinPool/IManagedBlockerInvoker")]
public interface ForkJoinPool.IManagedBlocker : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/concurrent/ForkJoinPool$ManagedBlocker", "", "Java.Util.Concurrent.ForkJoinPool/IManagedBlockerInvoker")>]
type ForkJoinPool.IManagedBlocker = interface
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
属性
実装

注釈

ForkJoinPoolで実行されているタスクのマネージド 並列処理を拡張するためのインターフェイス。

ManagedBlockerには 2 つのメソッドがあります。 メソッド #isReleasable は、ブロックが必要ない場合は true を返す必要があります。 メソッド #block 、必要に応じて現在のスレッドをブロックします (おそらく、実際にブロックする前に内部的に isReleasable を呼び出します)。 これらのアクションは、 ForkJoinPool#managedBlock(ManagedBlocker)を呼び出す任意のスレッドによって実行されます。 この API の通常とは異なるメソッドは、通常はブロックする可能性があるが、通常はブロックしないシンクロナイザーに対応します。 同様に、十分な並列処理を確保するために、追加のワーカーが必要になる可能性があるが、通常は必要ないケースのより効率的な内部処理が可能になります。 この場合、メソッド isReleasable の実装は、呼び出しを繰り返すのに対応できる必要があります。 isReleasableの前の呼び出し後にどちらのメソッドも呼び出されません。また、blocktrueを返しません。

たとえば、ReentrantLock に基づく ManagedBlocker を次に示します。

{@code
            class ManagedLocker implements ManagedBlocker {
              final ReentrantLock lock;
              boolean hasLock = false;
              ManagedLocker(ReentrantLock lock) { this.lock = lock; }
              public boolean block() {
                if (!hasLock)
                  lock.lock();
                return true;
              }
              public boolean isReleasable() {
                return hasLock || (hasLock = lock.tryLock());
              }
            }}

特定のキュー上の項目の待機をブロックする可能性があるクラスを次に示します。

{@code
            class QueueTaker<E> implements ManagedBlocker {
              final BlockingQueue<E> queue;
              volatile E item = null;
              QueueTaker(BlockingQueue<E> q) { this.queue = q; }
              public boolean block() throws InterruptedException {
                if (item == null)
                  item = queue.take();
                return true;
              }
              public boolean isReleasable() {
                return item != null || (item = queue.poll()) != null;
              }
              public E getItem() { // call after pool.managedBlock completes
                return item;
              }
            }}

Javaドキュメント。

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

プロパティ

名前 説明
Handle

基になる Android オブジェクトの JNI 値を取得します。

(継承元 IJavaObject)
IsReleasable

ブロックが不要な場合は true を返します。

JniIdentityHashCode

ラップされたインスタンスの java.lang.System.identityHashCode() の値を返します。

(継承元 IJavaPeerable)
JniManagedPeerState

マネージド ピアの状態。

(継承元 IJavaPeerable)
JniObjectReferenceControlBlock

ForkJoinPoolで実行されているタスクのマネージド 並列処理を拡張するためのインターフェイス。

(継承元 IJavaPeerable)
JniPeerMembers

メンバー アクセスと呼び出しのサポート。

(継承元 IJavaPeerable)
PeerReference

ラップされたJava オブジェクト インスタンスのJniObjectReferenceを返します。

(継承元 IJavaPeerable)

メソッド

名前 説明
Block()

ロックや条件の待機など、現在のスレッドをブロックする可能性があります。

Disposed()

インスタンスが破棄されたときに呼び出されます。

(継承元 IJavaPeerable)
DisposeUnlessReferenced()

このインスタンスへの未処理の参照がない場合は、 Dispose()を呼び出します。それ以外の場合は何も実行しません。

(継承元 IJavaPeerable)
Finalized()

インスタンスが終了したときに呼び出されます。

(継承元 IJavaPeerable)
SetJniIdentityHashCode(Int32)

JniIdentityHashCodeによって返される値を設定します。

(継承元 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

ForkJoinPoolで実行されているタスクのマネージド 並列処理を拡張するためのインターフェイス。

(継承元 IJavaPeerable)
SetPeerReference(JniObjectReference)

PeerReferenceによって返される値を設定します。

(継承元 IJavaPeerable)
UnregisterFromRuntime()

ランタイムが将来の Java.Interop.JniRuntime+JniValueManager.PeekValue 呼び出しから返されないように、このインスタンスの登録を解除します。

(継承元 IJavaPeerable)

拡張メソッド

名前 説明
GetJniTypeName(IJavaPeerable)

インスタンス selfの型の JNI 名を取得します。

JavaAs<TResult>(IJavaPeerable)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

ForkJoinPoolで実行されているタスクのマネージド 並列処理を拡張するためのインターフェイス。

TryJavaCast<TResult>(IJavaPeerable, TResult)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

適用対象