Поделиться через


ExecutorCompletionService Класс

Определение

Объект, CompletionService который использует предоставленный Executor для выполнения задач.

[Android.Runtime.Register("java/util/concurrent/ExecutorCompletionService", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "V" })]
public class ExecutorCompletionService : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.Util.Concurrent.ICompletionService
[<Android.Runtime.Register("java/util/concurrent/ExecutorCompletionService", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "V" })>]
type ExecutorCompletionService = class
    inherit Object
    interface ICompletionService
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
Наследование
ExecutorCompletionService
Атрибуты
Реализации

Комментарии

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

<Примеры использования.></b>

Предположим, что у вас есть набор решателей для определенной проблемы, каждый возвращающий значение определенного типа Result, и хотел бы одновременно выполнять их, обрабатывая результаты каждого из них, возвращающего значение, отличное от NULL, в некоторых методах use(Result r). Вы можете написать следующее:

{@code
            void solve(Executor e,
                       Collection<Callable<Result>> solvers)
                throws InterruptedException, ExecutionException {
              CompletionService<Result> cs
                  = new ExecutorCompletionService<>(e);
              solvers.forEach(cs::submit);
              for (int i = solvers.size(); i > 0; i--) {
                Result r = cs.take().get();
                if (r != null)
                  use(r);
              }
            }}

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

{@code
            void solve(Executor e,
                       Collection<Callable<Result>> solvers)
                throws InterruptedException {
              CompletionService<Result> cs
                  = new ExecutorCompletionService<>(e);
              int n = solvers.size();
              List<Future<Result>> futures = new ArrayList<>(n);
              Result result = null;
              try {
                solvers.forEach(solver -> futures.add(cs.submit(solver)));
                for (int i = n; i > 0; i--) {
                  try {
                    Result r = cs.take().get();
                    if (r != null) {
                      result = r;
                      break;
                    }
                  } catch (ExecutionException ignore) {}
                }
              } finally {
                futures.forEach(future -> future.cancel(true));
              }

              if (result != null)
                use(result);
            }}

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

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

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

Конструкторы

ExecutorCompletionService(IExecutor)

Создает службу ExecutionorCompletionService с помощью предоставленного исполнителя для выполнения базовой задачи и LinkedBlockingQueue очереди завершения.

ExecutorCompletionService(IExecutor, IBlockingQueue)

Создает службу ExecutionorCompletionService с помощью предоставленного исполнителя для выполнения базовой задачи и указанной очереди в качестве очереди завершения.

ExecutorCompletionService(IntPtr, JniHandleOwnership)

Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения.

Свойства

Class

Возвращает класс среды выполнения этого Objectобъекта.

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

Дескриптор базового экземпляра Android.

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

Объект, CompletionService который использует предоставленный Executor для выполнения задач.

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

Объект, CompletionService который использует предоставленный Executor для выполнения задач.

PeerReference

Объект, CompletionService который использует предоставленный Executor для выполнения задач.

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

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

ThresholdType

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

Методы

Clone()

Создает и возвращает копию этого объекта.

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

Объект, CompletionService который использует предоставленный Executor для выполнения задач.

(Унаследовано от Object)
Dispose(Boolean)

Объект, CompletionService который использует предоставленный Executor для выполнения задач.

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

Указывает, равен ли другой объект этому объекту.

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

Возвращает значение хэш-кода для объекта.

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

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

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

Пробуждение одного потока, ожидающего монитора этого объекта.

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

Просыпает все потоки, ожидающие монитора этого объекта.

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

Извлекает и удаляет будущее, представляющее следующую завершенную задачу или null нет.

Poll(Int64, TimeUnit)

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

PollAsync()

Объект, CompletionService который использует предоставленный Executor для выполнения задач.

PollAsync(Int64, TimeUnit)

Объект, CompletionService который использует предоставленный Executor для выполнения задач.

SetHandle(IntPtr, JniHandleOwnership)

Задает свойство Handle.

(Унаследовано от Object)
Submit(ICallable)

Объект, CompletionService который использует предоставленный Executor для выполнения задач.

Submit(IRunnable, Object)

Объект, CompletionService который использует предоставленный Executor для выполнения задач.

Take()

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

TakeAsync()

Объект, CompletionService который использует предоставленный Executor для выполнения задач.

ToArray<T>()

Объект, CompletionService который использует предоставленный Executor для выполнения задач.

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

Возвращает строковое представление объекта.

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

Объект, CompletionService который использует предоставленный Executor для выполнения задач.

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

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>помощи уведомления</em> или <эм>прерванного</em>.

(Унаследовано от Object)
Wait(Int64)

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прервано< или> до тех пор, пока не истекло определенное количество реального времени.

(Унаследовано от Object)
Wait(Int64, Int32)

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прервано< или> до тех пор, пока не истекло определенное количество реального времени.

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

Явные реализации интерфейса

IJavaPeerable.Disposed()

Объект, CompletionService который использует предоставленный Executor для выполнения задач.

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

Объект, CompletionService который использует предоставленный Executor для выполнения задач.

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

Объект, CompletionService который использует предоставленный Executor для выполнения задач.

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

Объект, CompletionService который использует предоставленный Executor для выполнения задач.

(Унаследовано от Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Объект, CompletionService который использует предоставленный Executor для выполнения задач.

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

Объект, CompletionService который использует предоставленный Executor для выполнения задач.

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

Объект, CompletionService который использует предоставленный Executor для выполнения задач.

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

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

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

Объект, CompletionService который использует предоставленный Executor для выполнения задач.

GetJniTypeName(IJavaPeerable)

Объект, CompletionService который использует предоставленный Executor для выполнения задач.

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