语言

IExecutor 接口

定义

执行已 Runnable 提交任务的对象。

[Android.Runtime.Register("java/util/concurrent/Executor", "", "Java.Util.Concurrent.IExecutorInvoker")]
public interface IExecutor : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/concurrent/Executor", "", "Java.Util.Concurrent.IExecutorInvoker")>]
type IExecutor = interface
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
派生
属性
实现

注解

执行已 Runnable 提交任务的对象。 此接口提供了一种将任务提交与运行每个任务的机制分离的方法,包括线程使用、计划等的详细信息。通常使用 A Executor ,而不是显式创建线程。 例如,可以使用以下各项,而不是 new Thread(new RunnableTask()).start() 调用每个任务集:

{@code
            Executor executor = anExecutor();
            executor.execute(new RunnableTask1());
            executor.execute(new RunnableTask2());
            ...}

但是,接口 Executor 并不严格要求执行是异步的。 在最简单的情况下,执行程序可以在调用方线程中立即运行提交的任务:

{@code
            class DirectExecutor implements Executor {
              public void execute(Runnable r) {
                r.run();
              }
            }}

更通常,任务在调用方线程以外的某个线程中执行。 下面的执行程序为每个任务生成一个新线程。

{@code
            class ThreadPerTaskExecutor implements Executor {
              public void execute(Runnable r) {
                new Thread(r).start();
              }
            }}

许多 Executor 实现对任务计划的方式和时间施加了某种限制。 下面的执行程序将任务提交到第二个执行程序,说明复合执行程序。

{@code
            class SerialExecutor implements Executor {
              final Queue<Runnable> tasks = new ArrayDeque<>();
              final Executor executor;
              Runnable active;

              SerialExecutor(Executor executor) {
                this.executor = executor;
              }

              public synchronized void execute(Runnable r) {
                tasks.add(() -> {
                  try {
                    r.run();
                  } finally {
                    scheduleNext();
                  }
                });
                if (active == null) {
                  scheduleNext();
                }
              }

              protected synchronized void scheduleNext() {
                if ((active = tasks.poll()) != null) {
                  executor.execute(active);
                }
              }
            }}

Executor此包ExecutorService中提供的实现是一个更广泛的接口。 该 ThreadPoolExecutor 类提供可扩展的线程池实现。 此类 Executors 为这些执行程序提供了方便的工厂方法。

内存一致性影响:在将对象提交Runnable到<Executor i>发生之前</i> 的线程中的操作开始(可能在另一个线程中)。

在 1.5 中添加。

Java文档java.util.concurrent.Executor。

本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。

属性

名称 说明
Handle

获取基础 Android 对象的 JNI 值。

(继承自 IJavaObject)
JniIdentityHashCode

返回包装实例的值 java.lang.System.identityHashCode() 。

(继承自 IJavaPeerable)
JniManagedPeerState

托管对等方的状态。

(继承自 IJavaPeerable)
JniObjectReferenceControlBlock

执行已 Runnable 提交任务的对象。

(继承自 IJavaPeerable)
JniPeerMembers

成员访问和调用支持。

(继承自 IJavaPeerable)
PeerReference

返回JniObjectReference包装的Java对象实例。

(继承自 IJavaPeerable)

方法

名称 说明
Disposed()

在释放实例时调用。

(继承自 IJavaPeerable)
DisposeUnlessReferenced()

如果没有对此实例的未完成引用,则调用 Dispose();否则不执行任何操作。

(继承自 IJavaPeerable)
Execute(IRunnable)

在将来的某个时间执行给定的命令。

Finalized()

在实例完成时调用。

(继承自 IJavaPeerable)
SetJniIdentityHashCode(Int32)

设置由 JniIdentityHashCode. 返回的值。

(继承自 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

执行已 Runnable 提交任务的对象。

(继承自 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)

执行已 Runnable 提交任务的对象。

TryJavaCast<TResult>(IJavaPeerable, TResult)

尝试强制self键入TResult,检查强制是否在Java端有效。

适用于