ForkJoinPool.IManagedBlocker 接口
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
用于扩展在 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
提供了两种方法。 如果不需要阻止,方法 #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.util.concurrent.ForkJoinPool.ManagedBlocker
Java 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
Handle |
获取基础 Android 对象的 JNI 值。 (继承自 IJavaObject) |
Is |
用于扩展在 s 中 |
Jni |
返回包装实例的值 |
Jni |
托管对等方的状态。 (继承自 IJavaPeerable) |
Jni |
成员访问和调用支持。 (继承自 IJavaPeerable) |
Peer |
返回 JniObjectReference 包装的 Java 对象实例。 (继承自 IJavaPeerable) |
Block() |
可能会阻止当前线程,例如等待锁或条件。 |
Disposed() |
在释放实例时调用。 (继承自 IJavaPeerable) |
Dispose |
如果没有对此实例的未完成引用,则调用 |
Finalized() |
在实例完成时调用。 (继承自 IJavaPeerable) |
Set |
设置由 |
Set |
用于扩展在 s 中 |
Set |
设置由 |
Unregister |
取消注册此实例,以便运行时不会从将来 Java.Interop.JniRuntime+JniValueManager.PeekValue 的调用中返回它。 (继承自 IJavaPeerable) |
Java |
执行 Android 运行时检查的类型转换。 |
Java |
用于扩展在 s 中 |
Get |
用于扩展在 s 中 |