次の方法で共有


ForkJoinPool.IManagedBlocker インターフェイス

定義

s で 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
属性
実装

注釈

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

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

たとえば、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 ドキュメントjava.util.concurrent.ForkJoinPool.ManagedBlocker

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

プロパティ

Handle

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

(継承元 IJavaObject)
IsReleasable

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

JniIdentityHashCode

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

(継承元 IJavaPeerable)
JniManagedPeerState

マネージド ピアの状態。

(継承元 IJavaPeerable)
JniPeerMembers

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

(継承元 IJavaPeerable)
PeerReference

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

(継承元 IJavaPeerable)

メソッド

Block()

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

Disposed()

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

(継承元 IJavaPeerable)
DisposeUnlessReferenced()

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

(継承元 IJavaPeerable)
Finalized()

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

(継承元 IJavaPeerable)
SetJniIdentityHashCode(Int32)

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

(継承元 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

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

(継承元 IJavaPeerable)
SetPeerReference(JniObjectReference)

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

(継承元 IJavaPeerable)
UnregisterFromRuntime()

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

(継承元 IJavaPeerable)

拡張メソッド

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

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

GetJniTypeName(IJavaPeerable)

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

適用対象