Язык

ForkJoinPool.IManagedBlocker Интерфейс

Определение

Интерфейс расширения управляемого параллелизма для задач, выполняемых в ForkJoinPools.

[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
Атрибуты
Реализации

Комментарии

Интерфейс расширения управляемого параллелизма для задач, выполняемых в ForkJoinPools.

A ManagedBlocker предоставляет два метода. Метод #isReleasable должен возвращать, true если блокировка не требуется. Метод #block блокирует текущий поток при необходимости (возможно, внутренний вызов перед фактической блокировкой isReleasable ). Эти действия выполняются вызовом любого потока ForkJoinPool#managedBlock(ManagedBlocker). Необычные методы в этом API размещают синхронизаторы, которые могут, но обычно не блокируются в течение длительных периодов. Аналогичным образом они позволяют более эффективно обрабатывать внутренние случаи, в которых могут быть дополнительные работники, но обычно не необходимы, чтобы обеспечить достаточный параллелизм. К этому концу реализации метода isReleasable должны быть доступны для повторяющегося вызова. Ни метод не вызывается после предыдущего isReleasable вызова или block возврата true.

Например, здесь используется ManagedBlocker на основе ReentrantLock:

{@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.

Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".

Свойства

Имя. Описание
Handle

Возвращает значение JNI базового объекта Android.

(Унаследовано от IJavaObject)
IsReleasable

Возвращает значение true, если блокировка не требуется.

JniIdentityHashCode

Возвращает значение java.lang.System.identityHashCode() для упаковаемого экземпляра.

(Унаследовано от IJavaPeerable)
JniManagedPeerState

Состояние управляемого однорангового узла.

(Унаследовано от IJavaPeerable)
JniObjectReferenceControlBlock

Интерфейс расширения управляемого параллелизма для задач, выполняемых в ForkJoinPools.

(Унаследовано от IJavaPeerable)
JniPeerMembers

Поддержка доступа к членам и вызовов.

(Унаследовано от IJavaPeerable)
PeerReference

JniObjectReference Возвращает экземпляр объекта в оболочке Java.

(Унаследовано от IJavaPeerable)

Методы

Имя. Описание
Block()

Возможно, блокирует текущий поток, например ожидание блокировки или условия.

Disposed()

Вызывается при удалении экземпляра.

(Унаследовано от IJavaPeerable)
DisposeUnlessReferenced()

Если нет невыполненных ссылок на этот экземпляр, то вызывается Dispose(); в противном случае ничего не делает.

(Унаследовано от IJavaPeerable)
Finalized()

Вызывается при завершении экземпляра.

(Унаследовано от IJavaPeerable)
SetJniIdentityHashCode(Int32)

Задайте значение, возвращаемое JniIdentityHashCode.

(Унаследовано от IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Интерфейс расширения управляемого параллелизма для задач, выполняемых в ForkJoinPools.

(Унаследовано от IJavaPeerable)
SetPeerReference(JniObjectReference)

Задайте значение, возвращаемое PeerReference.

(Унаследовано от IJavaPeerable)
UnregisterFromRuntime()

Отмените регистрацию этого экземпляра, чтобы среда выполнения не возвращала ее из будущих Java.Interop.JniRuntime+JniValueManager.PeekValue вызовов.

(Унаследовано от IJavaPeerable)

Методы расширения

Имя. Описание
GetJniTypeName(IJavaPeerable)

Возвращает имя JNI типа экземпляра self.

JavaAs<TResult>(IJavaPeerable)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

JavaCast<TResult>(IJavaObject)

Выполняет преобразование типа, проверяемого средой выполнения Android.

JavaCast<TResult>(IJavaObject)

Интерфейс расширения управляемого параллелизма для задач, выполняемых в ForkJoinPools.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

Применяется к