Язык

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 задачи. Этот интерфейс предоставляет способ развязки отправки задач от механики выполнения каждой задачи, включая сведения об использовании потоков, планировании и т. д. Обычно используется вместо 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>happen-before</i> его выполнение начинается, возможно, в другом потоке.

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

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

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

Свойства

Имя. Описание
Handle

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

(Унаследовано от 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)

Возвращает имя JNI типа экземпляра self.

JavaAs<TResult>(IJavaPeerable)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

Объект, выполняющий отправленные Runnable задачи.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Попробуйте принуждать к типуself, проверяяTResult, является ли приведение допустимым на стороне Java.

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