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)
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端有效。

适用于