IExecutorService インターフェイス

定義

終了を管理するメソッドと、1 つ以上の非同期タスクの進行状況を追跡するための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
派生
属性
実装

注釈

終了を管理するメソッドと、1 つ以上の非同期タスクの進行状況を追跡するためのExecutorを生成できるメソッドを提供するFuture

ExecutorServiceをシャットダウンすると、新しいタスクが拒否されます。 ExecutorServiceをシャットダウンするには、2 つの異なる方法が用意されています。 #shutdown メソッドを使用すると、以前に送信されたタスクを終了する前に実行できます。一方、#shutdownNow メソッドは待機中のタスクを開始できず、現在実行中のタスクを停止しようとします。 終了すると、Executor にはアクティブに実行されているタスクがなく、実行を待機しているタスクも、新しいタスクも送信できません。 リソースの再利用を許可するには、未使用の ExecutorService をシャットダウンする必要があります。

メソッド submitは、実行の取り消しや完了の待機に使用できるFutureを作成して返すことによって、基本メソッドExecutor#execute(Runnable)を拡張します。 メソッド invokeAny および invokeAll 、最も一般的に役立つ一括実行形式を実行し、タスクのコレクションを実行した後、少なくとも 1 つ以上の完了を待機します。 (クラス ExecutorCompletionService を使用して、これらのメソッドのカスタマイズされたバリアントを記述できます)。

Executors クラスは、このパッケージで提供される Executor サービスのファクトリ メソッドを提供します。

<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 を確立して閉じる (シャットダウン、終了するまでブロックする) こともできます。別の Executors ファクトリメソッドを使用して示します。

{@code
            try (ExecutorService e =  Executors.newWorkStealingPool()) {
              // submit or execute many tasks with e ...
            }}

さらにカスタマイズも可能です。 たとえば、次のメソッドは、2 つのフェーズで 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またはCallable タスクを ExecutorService<i>happen-before</i>に送信する前のスレッド内のアクション。そのタスクによって実行されたアクションは、結果がFuture.get()を介して取得される前に発生します。

1\.5 で追加されました。

Javaドキュメント。

このページの一部は、Androidオープンソースプロジェクトによって作成および共有された作業に基づく変更でありCreative Commons 2.5属性ライセンスに記載されている条件に従って使用されます。

プロパティ

名前 説明
Handle

基になる Android オブジェクトの JNI 値を取得します。

(継承元 IJavaObject)
IsShutdown

この Executor がシャットダウンされた場合に true を返します。

IsTerminated

シャットダウン後にすべてのタスクが完了した場合に true を返します。

JniIdentityHashCode

ラップされたインスタンスの java.lang.System.identityHashCode() の値を返します。

(継承元 IJavaPeerable)
JniManagedPeerState

マネージド ピアの状態。

(継承元 IJavaPeerable)
JniPeerMembers

メンバー アクセスと呼び出しのサポート。

(継承元 IJavaPeerable)
PeerReference

ラップされたJava オブジェクト インスタンスのJniObjectReferenceを返します。

(継承元 IJavaPeerable)

メソッド

名前 説明
AwaitTermination(Int64, TimeUnit)

シャットダウン要求後にすべてのタスクの実行が完了するか、タイムアウトが発生するか、現在のスレッドが中断されるまでブロックします。どちらか早い方が発生します。

Close()

以前に送信されたタスクが実行される順序付けされたシャットダウンを開始しますが、新しいタスクは受け入れなくなります。

Disposed()

インスタンスが破棄されたときに呼び出されます。

(継承元 IJavaPeerable)
DisposeUnlessReferenced()

このインスタンスへの未処理の参照がない場合は、 Dispose()を呼び出します。それ以外の場合は何も実行しません。

(継承元 IJavaPeerable)
Execute(IRunnable)

将来、特定のコマンドを実行します。

(継承元 IExecutor)
Finalized()

インスタンスが終了したときに呼び出されます。

(継承元 IJavaPeerable)
InvokeAll(ICollection, Int64, TimeUnit)

特定のタスクを実行し、すべての完了またはタイムアウトが経過した時点で、どちらか早く発生したときに、その状態と結果を保持する Futures の一覧を返します。

InvokeAll(ICollection)

指定されたタスクを実行し、すべての完了時に、その状態と結果を保持する先物の一覧を返します。

InvokeAny(ICollection, Int64, TimeUnit)

指定されたタスクを実行し、正常に完了したタスクの結果を返します (i.

InvokeAny(ICollection)

指定されたタスクを実行し、正常に完了したタスクの結果を返します (i.

SetJniIdentityHashCode(Int32)

JniIdentityHashCodeによって返される値を設定します。

(継承元 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

終了を管理するメソッドと、1 つ以上の非同期タスクの進行状況を追跡するためのExecutorを生成できるメソッドを提供するFuture

(継承元 IJavaPeerable)
SetPeerReference(JniObjectReference)

PeerReferenceによって返される値を設定します。

(継承元 IJavaPeerable)
Shutdown()

以前に送信されたタスクが実行される順序付けされたシャットダウンを開始しますが、新しいタスクは受け入れなくなります。

ShutdownNow()

アクティブに実行されているすべてのタスクを停止し、待機中のタスクの処理を停止し、実行を待機していたタスクの一覧を返します。

Submit(ICallable)

値を返すタスクを実行用に送信し、タスクの保留中の結果を表す Future を返します。

Submit(IRunnable, Object)

実行可能タスクを実行用に送信し、そのタスクを表す Future を返します。

Submit(IRunnable)

実行可能タスクを実行用に送信し、そのタスクを表す Future を返します。

UnregisterFromRuntime()

ランタイムが将来の Java.Interop.JniRuntime+JniValueManager.PeekValue 呼び出しから返されないように、このインスタンスの登録を解除します。

(継承元 IJavaPeerable)

拡張メソッド

名前 説明
AwaitTerminationAsync(IExecutorService, Int64, TimeUnit)

終了を管理するメソッドと、1 つ以上の非同期タスクの進行状況を追跡するためのExecutorを生成できるメソッドを提供するFuture

GetJniTypeName(IJavaPeerable)

インスタンス selfの型の JNI 名を取得します。

InvokeAnyAsync(IExecutorService, ICollection, Int64, TimeUnit)

終了を管理するメソッドと、1 つ以上の非同期タスクの進行状況を追跡するためのExecutorを生成できるメソッドを提供するFuture

InvokeAnyAsync(IExecutorService, ICollection)

終了を管理するメソッドと、1 つ以上の非同期タスクの進行状況を追跡するためのExecutorを生成できるメソッドを提供するFuture

JavaAs<TResult>(IJavaPeerable)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

終了を管理するメソッドと、1 つ以上の非同期タスクの進行状況を追跡するためのExecutorを生成できるメソッドを提供するFuture

TryJavaCast<TResult>(IJavaPeerable, TResult)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

適用対象