IExecutorService インターフェイス

定義

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

ExecutorService シャットダウンすると、新しいタスクが拒否されます。 をシャットダウンするための 2 つの異なる方法が ExecutorService用意されています。 メソッドは #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 2 つのフェーズでシャットダウンします。最初に を呼び出 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();
              }
            }}

メモリ整合性効果: または タスクを i に送信するExecutorService<>前のスレッド内のCallableRunnableアクションは、そのタスクによって実行されたアクションが発生する前</i> になります。このアクションは、 を介してFuture.get()結果が取得される前に発生します。

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

java.util.concurrent.ExecutorServiceJava ドキュメント。

このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。

プロパティ

Handle

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

(継承元 IJavaObject)
IsShutdown

trueこの Executor がシャットダウンされている場合は を返します。

IsTerminated

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

JniIdentityHashCode

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

(継承元 IJavaPeerable)
JniManagedPeerState

マネージド ピアの状態。

(継承元 IJavaPeerable)
JniPeerMembers

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

(継承元 IJavaPeerable)
PeerReference

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

(継承元 IJavaPeerable)

メソッド

AwaitTermination(Int64, TimeUnit)

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

Disposed()

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

(継承元 IJavaPeerable)
DisposeUnlessReferenced()

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

(継承元 IJavaPeerable)
Execute(IRunnable)

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

(継承元 IExecutor)
Finalized()

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

(継承元 IJavaPeerable)
InvokeAll(ICollection)

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

InvokeAll(ICollection, Int64, TimeUnit)

指定されたタスクを実行し、すべての完了またはタイムアウトが切れた場合に、その状態と結果を保持する Futures の一覧を返します。どちらか早い方の方が発生します。

InvokeAny(ICollection)

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

InvokeAny(ICollection, Int64, TimeUnit)

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

SetJniIdentityHashCode(Int32)

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

(継承元 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

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

(継承元 IJavaPeerable)
SetPeerReference(JniObjectReference)

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

(継承元 IJavaPeerable)
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)

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

GetJniTypeName(IJavaPeerable)

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

AwaitTerminationAsync(IExecutorService, Int64, TimeUnit)

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

InvokeAnyAsync(IExecutorService, ICollection)

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

InvokeAnyAsync(IExecutorService, ICollection, Int64, TimeUnit)

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

適用対象