IExecutorService インターフェイス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
終了 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
<>前のスレッド内のCallable
Runnable
アクションは、そのタスクによって実行されたアクションが発生する前</i> になります。このアクションは、 を介してFuture.get()
結果が取得される前に発生します。
1\.5 で追加されました。
の java.util.concurrent.ExecutorService
Java ドキュメント。
このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。
プロパティ
Handle |
基になる Android オブジェクトの JNI 値を取得します。 (継承元 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) |
指定されたタスクを実行し、すべての完了時に状態と結果を保持する Futures の一覧を返します。 |
InvokeAll(ICollection, Int64, TimeUnit) |
指定されたタスクを実行し、すべての完了またはタイムアウトが切れた場合に、その状態と結果を保持する Futures の一覧を返します。どちらか早い方の方が発生します。 |
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) |
終了 |