语言

IExecutorService 接口

定义

它 Executor 提供用于管理终止的方法以及可以生成一 Future 个或多个异步任务的跟踪进度的方法。

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

注解

它 Executor 提供用于管理终止的方法以及可以生成一 Future 个或多个异步任务的跟踪进度的方法。

可以关闭一个 ExecutorService ,这将导致它拒绝新任务。 提供了两种不同的方法来关闭 。ExecutorService 该方法 #shutdown 将允许以前提交的任务在终止之前执行,而 #shutdownNow 该方法会阻止等待任务开始并尝试停止当前正在执行的任务。 终止后,执行程序没有主动执行的任务,没有等待执行的任务,也不能提交新任务。 应关闭未使用的 ExecutorService 资源,以允许回收其资源。

方法submit通过创建和返回Future可用于取消执行和/或等待完成的基方法来扩展基方法Executor#execute(Runnable)。 invokeAny invokeAll方法和执行最常用的批量执行形式,执行任务集合,然后等待至少一个或全部完成。 (类 ExecutorCompletionService 可用于编写这些方法的自定义变体。

该 Executors 类为此包中提供的执行程序服务的工厂方法。

<h2>用法示例</h2>

下面是网络服务的草图,其中线程池服务传入请求中的线程。 它使用预配置的 Executors#newFixedThreadPool 工厂方法:

{@code
            class NetworkService implements Runnable {
              private final ServerSocket serverSocket;
              private final ExecutorService pool;

              public NetworkService(int port, int poolSize)
                  throws IOException {
                serverSocket = new ServerSocket(port);
                pool = Executors.newFixedThreadPool(poolSize);
              }

              public void run() { // run the service
                try {
                  for (;;) {
                    pool.execute(new Handler(serverSocket.accept()));
                  }
                } catch (IOException ex) {
                  pool.shutdown();
                }
              }
            }

            class Handler implements Runnable {
              private final Socket socket;
              Handler(Socket socket) { this.socket = socket; }
              public void run() {
                // read and service request on socket
              }
            }}

ExecutorService还可以建立和关闭(关闭,阻止直到终止),如下所示;说明使用不同的Executors工厂方法:

{@code
            try (ExecutorService e =  Executors.newWorkStealingPool()) {
              // submit or execute many tasks with e ...
            }}

还可以进一步自定义。 例如,以下方法在两个阶段中关闭一个 ExecutorService 阶段,首先调用 shutdown 拒绝传入任务,然后在必要时调用 shutdownNow以取消任何挥之不去的任务:

{@code
            void shutdownAndAwaitTermination(ExecutorService pool) {
              pool.shutdown(); // Disable new tasks from being submitted
              try {
                // Wait a while for existing tasks to terminate
                if (!pool.awaitTermination(60, TimeUnit.SECONDS)) {
                  pool.shutdownNow(); // Cancel currently executing tasks
                  // Wait a while for tasks to respond to being cancelled
                  if (!pool.awaitTermination(60, TimeUnit.SECONDS))
                      System.err.println("Pool did not terminate");
                }
              } catch (InterruptedException ex) {
                // (Re-)Cancel if current thread also interrupted
                pool.shutdownNow();
                // Preserve interrupt status
                Thread.currentThread().interrupt();
              }
            }}

内存一致性效果:在将某个 Runnable 或 Callable 任务提交到 ExecutorService<i>发生前</i> 线程中的操作,该任务执行的任何操作,而该操作又 发生在 通过 Future.get()结果检索之前。

在 1.5 中添加。

Java文档java.util.concurrent.ExecutorService。

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

属性

名称 说明
Handle

获取基础 Android 对象的 JNI 值。

(继承自 IJavaObject)
IsShutdown

返回 true 此执行程序是否已关闭。

IsTerminated

如果所有任务在关闭后都已完成,则返回 true 。

JniIdentityHashCode

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

(继承自 IJavaPeerable)
JniManagedPeerState

托管对等方的状态。

(继承自 IJavaPeerable)
JniObjectReferenceControlBlock

它 Executor 提供用于管理终止的方法以及可以生成一 Future 个或多个异步任务的跟踪进度的方法。

(继承自 IJavaPeerable)
JniPeerMembers

成员访问和调用支持。

(继承自 IJavaPeerable)
PeerReference

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

(继承自 IJavaPeerable)

方法

名称 说明
AwaitTermination(Int64, TimeUnit)

阻止,直到所有任务在关闭请求后完成执行,或者超时发生,或者当前线程中断,以先发生。

Close()

启动有序关闭,在该关闭中执行以前提交的任务,但不会接受任何新任务。

Disposed()

在释放实例时调用。

(继承自 IJavaPeerable)
DisposeUnlessReferenced()

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

(继承自 IJavaPeerable)
Execute(IRunnable)

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

(继承自 IExecutor)
Finalized()

在实例完成时调用。

(继承自 IJavaPeerable)
InvokeAll(ICollection, Int64, TimeUnit)

执行给定的任务,返回所有完成或超时到期时保留其状态和结果的期货列表,以先发生的情况为准。

InvokeAll(ICollection)

执行给定的任务,返回所有完成后保留其状态和结果的期货列表。

InvokeAny(ICollection, Int64, TimeUnit)

执行给定的任务,返回一个成功完成的结果(i.

InvokeAny(ICollection)

执行给定的任务,返回一个成功完成的结果(i.

SetJniIdentityHashCode(Int32)

设置由 JniIdentityHashCode. 返回的值。

(继承自 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

它 Executor 提供用于管理终止的方法以及可以生成一 Future 个或多个异步任务的跟踪进度的方法。

(继承自 IJavaPeerable)
SetPeerReference(JniObjectReference)

设置由 PeerReference. 返回的值。

(继承自 IJavaPeerable)
Shutdown()

启动有序关闭,在该关闭中执行以前提交的任务,但不会接受任何新任务。

ShutdownNow()

尝试停止所有主动执行的任务,停止正在等待的任务的处理,并返回等待执行的任务的列表。

Submit(ICallable)

提交值返回任务以供执行,并返回一个“未来”,表示任务的挂起结果。

Submit(IRunnable, Object)

提交可运行的任务以供执行,并返回表示该任务的 Future。

Submit(IRunnable)

提交可运行的任务以供执行,并返回表示该任务的 Future。

UnregisterFromRuntime()

取消注册此实例,使运行时不会从将来 Java.Interop.JniRuntime+JniValueManager.PeekValue 的调用中返回它。

(继承自 IJavaPeerable)

扩展方法

名称 说明
AwaitTerminationAsync(IExecutorService, Int64, TimeUnit)

它 Executor 提供用于管理终止的方法以及可以生成一 Future 个或多个异步任务的跟踪进度的方法。

GetJniTypeName(IJavaPeerable)

获取实例 self类型的 JNI 名称。

InvokeAnyAsync(IExecutorService, ICollection, Int64, TimeUnit)

它 Executor 提供用于管理终止的方法以及可以生成一 Future 个或多个异步任务的跟踪进度的方法。

InvokeAnyAsync(IExecutorService, ICollection)

它 Executor 提供用于管理终止的方法以及可以生成一 Future 个或多个异步任务的跟踪进度的方法。

JavaAs<TResult>(IJavaPeerable)

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

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

它 Executor 提供用于管理终止的方法以及可以生成一 Future 个或多个异步任务的跟踪进度的方法。

TryJavaCast<TResult>(IJavaPeerable, TResult)

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

适用于