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 |
Возвращает значение |
| JniManagedPeerState |
Состояние управляемого однорангового узла. (Унаследовано от IJavaPeerable) |
| JniObjectReferenceControlBlock |
Объект, выполняющий отправленные |
| JniPeerMembers |
Поддержка доступа к членам и вызовов. (Унаследовано от IJavaPeerable) |
| PeerReference |
JniObjectReference Возвращает экземпляр объекта в оболочке Java. (Унаследовано от IJavaPeerable) |
Методы
| Имя. | Описание |
|---|---|
| Disposed() |
Вызывается при удалении экземпляра. (Унаследовано от IJavaPeerable) |
| DisposeUnlessReferenced() |
Если нет невыполненных ссылок на этот экземпляр, то вызывается |
| Execute(IRunnable) |
Выполняет указанную команду в некоторое время в будущем. |
| Finalized() |
Вызывается при завершении экземпляра. (Унаследовано от IJavaPeerable) |
| SetJniIdentityHashCode(Int32) |
Задайте значение, возвращаемое |
| SetJniManagedPeerState(JniManagedPeerStates) |
Объект, выполняющий отправленные |
| SetPeerReference(JniObjectReference) |
Задайте значение, возвращаемое |
| UnregisterFromRuntime() |
Отмените регистрацию этого экземпляра, чтобы среда выполнения не возвращала ее из будущих Java.Interop.JniRuntime+JniValueManager.PeekValue вызовов. (Унаследовано от IJavaPeerable) |
Методы расширения
| Имя. | Описание |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Возвращает имя JNI типа экземпляра |
| JavaAs<TResult>(IJavaPeerable) |
Попробуйте принуждать к типу |
| JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверяемого средой выполнения Android. |
| JavaCast<TResult>(IJavaObject) |
Объект, выполняющий отправленные |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Попробуйте принуждать к типу |