IExecutorService インターフェイス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
終了を管理するメソッドと、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 で追加されました。
このページの一部は、Androidオープンソースプロジェクトによって作成および共有された作業に基づく変更でありCreative Commons 2.5属性ライセンスに記載されている条件に従って使用されます。
プロパティ
| 名前 | 説明 |
|---|---|
| Handle |
基になる Android オブジェクトの JNI 値を取得します。 (継承元 IJavaObject) |
| IsShutdown |
この Executor がシャットダウンされた場合に |
| IsTerminated |
シャットダウン後にすべてのタスクが完了した場合に |
| JniIdentityHashCode |
ラップされたインスタンスの |
| JniManagedPeerState |
マネージド ピアの状態。 (継承元 IJavaPeerable) |
| JniPeerMembers |
メンバー アクセスと呼び出しのサポート。 (継承元 IJavaPeerable) |
| PeerReference |
ラップされたJava オブジェクト インスタンスのJniObjectReferenceを返します。 (継承元 IJavaPeerable) |
メソッド
| 名前 | 説明 |
|---|---|
| AwaitTermination(Int64, TimeUnit) |
シャットダウン要求後にすべてのタスクの実行が完了するか、タイムアウトが発生するか、現在のスレッドが中断されるまでブロックします。どちらか早い方が発生します。 |
| Close() |
以前に送信されたタスクが実行される順序付けされたシャットダウンを開始しますが、新しいタスクは受け入れなくなります。 |
| Disposed() |
インスタンスが破棄されたときに呼び出されます。 (継承元 IJavaPeerable) |
| DisposeUnlessReferenced() |
このインスタンスへの未処理の参照がない場合は、 |
| Execute(IRunnable) |
将来、特定のコマンドを実行します。 (継承元 IExecutor) |
| Finalized() |
インスタンスが終了したときに呼び出されます。 (継承元 IJavaPeerable) |
| InvokeAll(ICollection, Int64, TimeUnit) |
特定のタスクを実行し、すべての完了またはタイムアウトが経過した時点で、どちらか早く発生したときに、その状態と結果を保持する Futures の一覧を返します。 |
| InvokeAll(ICollection) |
指定されたタスクを実行し、すべての完了時に、その状態と結果を保持する先物の一覧を返します。 |
| InvokeAny(ICollection, Int64, TimeUnit) |
指定されたタスクを実行し、正常に完了したタスクの結果を返します (i. |
| InvokeAny(ICollection) |
指定されたタスクを実行し、正常に完了したタスクの結果を返します (i. |
| SetJniIdentityHashCode(Int32) |
|
| SetJniManagedPeerState(JniManagedPeerStates) |
終了を管理するメソッドと、1 つ以上の非同期タスクの進行状況を追跡するための |
| SetPeerReference(JniObjectReference) |
|
| Shutdown() |
以前に送信されたタスクが実行される順序付けされたシャットダウンを開始しますが、新しいタスクは受け入れなくなります。 |
| ShutdownNow() |
アクティブに実行されているすべてのタスクを停止し、待機中のタスクの処理を停止し、実行を待機していたタスクの一覧を返します。 |
| Submit(ICallable) |
値を返すタスクを実行用に送信し、タスクの保留中の結果を表す Future を返します。 |
| Submit(IRunnable, Object) |
実行可能タスクを実行用に送信し、そのタスクを表す Future を返します。 |
| Submit(IRunnable) |
実行可能タスクを実行用に送信し、そのタスクを表す Future を返します。 |
| UnregisterFromRuntime() |
ランタイムが将来の Java.Interop.JniRuntime+JniValueManager.PeekValue 呼び出しから返されないように、このインスタンスの登録を解除します。 (継承元 IJavaPeerable) |
拡張メソッド
| 名前 | 説明 |
|---|---|
| AwaitTerminationAsync(IExecutorService, Int64, TimeUnit) |
終了を管理するメソッドと、1 つ以上の非同期タスクの進行状況を追跡するための |
| GetJniTypeName(IJavaPeerable) |
インスタンス |
| InvokeAnyAsync(IExecutorService, ICollection, Int64, TimeUnit) |
終了を管理するメソッドと、1 つ以上の非同期タスクの進行状況を追跡するための |
| InvokeAnyAsync(IExecutorService, ICollection) |
終了を管理するメソッドと、1 つ以上の非同期タスクの進行状況を追跡するための |
| JavaAs<TResult>(IJavaPeerable) |
|
| JavaCast<TResult>(IJavaObject) |
Android ランタイムチェック型変換を実行します。 |
| JavaCast<TResult>(IJavaObject) |
終了を管理するメソッドと、1 つ以上の非同期タスクの進行状況を追跡するための |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
|