共用方式為


ForkJoinPool.IManagedBlocker 介面

定義

擴充 中 ForkJoinPool執行之工作的Managed平行處理原則的介面。

[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執行之工作的Managed平行處理原則的介面。

ManagedBlocker提供兩種方法。 如果不需要封鎖,方法 #isReleasable 必須傳回 true 。 方法 #block 會在必要時封鎖目前的線程(或許是在內部叫用 isReleasable 之前實際封鎖)。 這些動作是由任何叫用 ForkJoinPool#managedBlock(ManagedBlocker)的線程所執行。 此 API 中的異常方法可配合同步器,這些同步器通常不會長時間封鎖。 同樣地,它們允許更有效率的內部處理案例,其中可能需要額外的背景工作,但通常不需要,以確保有足夠的平行處理原則。 為此,方法 isReleasable 的實作必須能夠重複調用。 在 之前叫用 isReleasableblock 傳回 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.util.concurrent.ForkJoinPool.ManagedBlockerJava 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

屬性

Handle

取得基礎 Android 物件的 JNI 值。

(繼承來源 IJavaObject)
IsReleasable

擴充 中 ForkJoinPool執行之工作的Managed平行處理原則的介面。

JniIdentityHashCode

傳回包裝實例的 值 java.lang.System.identityHashCode()

(繼承來源 IJavaPeerable)
JniManagedPeerState

受控對等的狀態。

(繼承來源 IJavaPeerable)
JniPeerMembers

成員存取和調用支援。

(繼承來源 IJavaPeerable)
PeerReference

JniObjectReference 回已包裝 Java 物件實例的 。

(繼承來源 IJavaPeerable)

方法

Block()

可能會封鎖目前的線程,例如等候鎖定或條件。

Disposed()

處置實例時呼叫。

(繼承來源 IJavaPeerable)
DisposeUnlessReferenced()

如果這個實例沒有未完成的參考,則呼叫 Dispose(),否則不會執行任何動作。

(繼承來源 IJavaPeerable)
Finalized()

實例完成時呼叫。

(繼承來源 IJavaPeerable)
SetJniIdentityHashCode(Int32)

設定所 JniIdentityHashCode傳回的值。

(繼承來源 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

擴充 中 ForkJoinPool執行之工作的Managed平行處理原則的介面。

(繼承來源 IJavaPeerable)
SetPeerReference(JniObjectReference)

設定所 PeerReference傳回的值。

(繼承來源 IJavaPeerable)
UnregisterFromRuntime()

取消註冊此實例,讓運行時間不會從未來的 Java.Interop.JniRuntime+JniValueManager.PeekValue 調用傳回它。

(繼承來源 IJavaPeerable)

擴充方法

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

擴充 中 ForkJoinPool執行之工作的Managed平行處理原則的介面。

GetJniTypeName(IJavaPeerable)

擴充 中 ForkJoinPool執行之工作的Managed平行處理原則的介面。

適用於