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 |
Возвращает значение |
IsTerminated |
Возвращает значение |
JniIdentityHashCode |
Возвращает значение |
JniManagedPeerState |
Состояние управляемого однорангового узла. (Унаследовано от IJavaPeerable) |
JniPeerMembers |
Поддержка доступа к членам и вызова. (Унаследовано от IJavaPeerable) |
PeerReference |
Возвращает экземпляр JniObjectReference объекта Java, заключенный в оболочку. (Унаследовано от IJavaPeerable) |
Методы
AwaitTermination(Int64, TimeUnit) |
Блокируется до завершения выполнения всех задач после запроса на завершение работы, до истечения времени ожидания или прерывания текущего потока в зависимости от того, что произойдет первым. |
Disposed() |
Вызывается при удалении экземпляра. (Унаследовано от IJavaPeerable) |
DisposeUnlessReferenced() |
Если отсутствуют невыполненные ссылки на этот экземпляр, вызывает метод |
Execute(IRunnable) |
Выполняет указанную команду в некоторое время в будущем. (Унаследовано от IExecutor) |
Finalized() |
Вызывается при завершении работы экземпляра. (Унаследовано от IJavaPeerable) |
InvokeAll(ICollection) |
Выполняет заданные задачи, возвращая список фьючерсов с их состоянием и результатами по завершении. |
InvokeAll(ICollection, Int64, TimeUnit) |
Выполняет заданные задачи, возвращая список фьючерсов с их состоянием и результатами после завершения или истечения времени ожидания, в зависимости от того, что произойдет раньше. |
InvokeAny(ICollection) |
Выполняет заданные задачи, возвращая результат успешно выполненной задачи (i. |
InvokeAny(ICollection, Int64, TimeUnit) |
Выполняет заданные задачи, возвращая результат успешно выполненной задачи (i. |
SetJniIdentityHashCode(Int32) |
Задайте значение, возвращаемое . |
SetJniManagedPeerState(JniManagedPeerStates) |
Объект |
SetPeerReference(JniObjectReference) |
Задайте значение, возвращаемое . |
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) |
Объект |
GetJniTypeName(IJavaPeerable) |
Объект |
AwaitTerminationAsync(IExecutorService, Int64, TimeUnit) |
Объект |
InvokeAnyAsync(IExecutorService, ICollection) |
Объект |
InvokeAnyAsync(IExecutorService, ICollection, Int64, TimeUnit) |
Объект |