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 расширяет базовый метод Executor#execute(Runnable) , создавая и возвращая Future объект , который можно использовать для отмены выполнения и (или) ожидания завершения. Методы 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 в два этапа, сначала вызывая 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 задачи ExecutorService<или Callable в i>происходят до</i> любых действий, выполняемых этой задачей, которые, в свою очередь, происходят до получения результата с помощью Future.get().

Добавлено в версии 1.5.

Документация по Java для java.util.concurrent.ExecutorService.

Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.

Свойства

Handle

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

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

Возвращает значение true , если этот исполнитель был завершен.

IsTerminated

Возвращает значение true , если все задачи завершены после завершения работы.

JniIdentityHashCode

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

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

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

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

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

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

Возвращает экземпляр JniObjectReference объекта Java, заключенный в оболочку.

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

Методы

AwaitTermination(Int64, TimeUnit)

Блокируется до завершения выполнения всех задач после запроса на завершение работы, до истечения времени ожидания или прерывания текущего потока в зависимости от того, что произойдет первым.

Disposed()

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

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

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

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

Выполняет указанную команду в некоторое время в будущем.

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

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

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

Выполняет заданные задачи, возвращая список фьючерсов с их состоянием и результатами по завершении.

InvokeAll(ICollection, Int64, TimeUnit)

Выполняет заданные задачи, возвращая список фьючерсов с их состоянием и результатами после завершения или истечения времени ожидания, в зависимости от того, что произойдет раньше.

InvokeAny(ICollection)

Выполняет заданные задачи, возвращая результат успешно выполненной задачи (i.

InvokeAny(ICollection, Int64, TimeUnit)

Выполняет заданные задачи, возвращая результат успешно выполненной задачи (i.

SetJniIdentityHashCode(Int32)

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

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

Объект Executor , предоставляющий методы управления завершением и методы, которые могут создавать Future для отслеживания хода выполнения одной или нескольких асинхронных задач.

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

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

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

Инициирует упорядоченное завершение работы, в котором выполняются ранее отправленные задачи, но новые задачи не принимаются.

ShutdownNow()

Пытается остановить все активно выполняемые задачи, останавливает обработку ожидающих задач и возвращает список задач, ожидающих выполнения.

Submit(ICallable)

Отправляет задачу, возвращающую значение, для выполнения и возвращает значение Future, представляющее ожидающие результаты задачи.

Submit(IRunnable)

Отправляет выполняемую задачу для выполнения и возвращает значение Future, представляющее ее.

Submit(IRunnable, Object)

Отправляет выполняемую задачу для выполнения и возвращает значение Future, представляющее ее.

UnregisterFromRuntime()

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

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

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

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

Объект Executor , предоставляющий методы управления завершением и методы, которые могут создавать Future для отслеживания хода выполнения одной или нескольких асинхронных задач.

GetJniTypeName(IJavaPeerable)

Объект Executor , предоставляющий методы управления завершением и методы, которые могут создавать Future для отслеживания хода выполнения одной или нескольких асинхронных задач.

AwaitTerminationAsync(IExecutorService, Int64, TimeUnit)

Объект Executor , предоставляющий методы управления завершением и методы, которые могут создавать Future для отслеживания хода выполнения одной или нескольких асинхронных задач.

InvokeAnyAsync(IExecutorService, ICollection)

Объект Executor , предоставляющий методы управления завершением и методы, которые могут создавать Future для отслеживания хода выполнения одной или нескольких асинхронных задач.

InvokeAnyAsync(IExecutorService, ICollection, Int64, TimeUnit)

Объект Executor , предоставляющий методы управления завершением и методы, которые могут создавать Future для отслеживания хода выполнения одной или нескольких асинхронных задач.

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