言語

IExecutor インターフェイス

定義

送信された Runnable タスクを実行するオブジェクト。

[Android.Runtime.Register("java/util/concurrent/Executor", "", "Java.Util.Concurrent.IExecutorInvoker")]
public interface IExecutor : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/concurrent/Executor", "", "Java.Util.Concurrent.IExecutorInvoker")>]
type IExecutor = interface
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
派生
属性
実装

注釈

送信された Runnable タスクを実行するオブジェクト。 このインターフェイスは、スレッドの使用の詳細、スケジュール設定など、各タスクの実行方法のメカニズムからタスクの送信を切り離す方法を提供します。通常、スレッドを明示的に作成する代わりに、 Executor が使用されます。 たとえば、一連のタスクごとに new Thread(new RunnableTask()).start() を呼び出す代わりに、次のコマンドを使用できます。

{@code
            Executor executor = anExecutor();
            executor.execute(new RunnableTask1());
            executor.execute(new RunnableTask2());
            ...}

ただし、 Executor インターフェイスでは、実行を非同期にする必要はありません。 最も簡単なケースでは、Executor は、送信されたタスクを呼び出し元のスレッドですぐに実行できます。

{@code
            class DirectExecutor implements Executor {
              public void execute(Runnable r) {
                r.run();
              }
            }}

通常、タスクは呼び出し元のスレッド以外のスレッドで実行されます。 以下の Executor は、タスクごとに新しいスレッドを生成します。

{@code
            class ThreadPerTaskExecutor implements Executor {
              public void execute(Runnable r) {
                new Thread(r).start();
              }
            }}

多くの Executor 実装では、タスクをスケジュールする方法とタイミングに何らかの制限があります。 以下の Executor は、2 つ目の Executor へのタスクの送信をシリアル化し、複合実行プログラムを示します。

{@code
            class SerialExecutor implements Executor {
              final Queue<Runnable> tasks = new ArrayDeque<>();
              final Executor executor;
              Runnable active;

              SerialExecutor(Executor executor) {
                this.executor = executor;
              }

              public synchronized void execute(Runnable r) {
                tasks.add(() -> {
                  try {
                    r.run();
                  } finally {
                    scheduleNext();
                  }
                });
                if (active == null) {
                  scheduleNext();
                }
              }

              protected synchronized void scheduleNext() {
                if ((active = tasks.poll()) != null) {
                  executor.execute(active);
                }
              }
            }}

このパッケージで提供される Executor 実装は、より広範なインターフェイスである ExecutorServiceを実装します。 ThreadPoolExecutor クラスは、拡張可能なスレッド プールの実装を提供します。 Executors クラスは、これらの Executor に便利なファクトリ メソッドを提供します。

メモリ整合性の影響: Runnable オブジェクトを Executor<i>happen-before</i> に送信する前のスレッド内のアクションは、おそらく別のスレッドで実行が開始されます。

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

Javaドキュメント。

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

プロパティ

名前 説明
Handle

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

(継承元 IJavaObject)
JniIdentityHashCode

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

(継承元 IJavaPeerable)
JniManagedPeerState

マネージド ピアの状態。

(継承元 IJavaPeerable)
JniObjectReferenceControlBlock

送信された Runnable タスクを実行するオブジェクト。

(継承元 IJavaPeerable)
JniPeerMembers

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

(継承元 IJavaPeerable)
PeerReference

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

(継承元 IJavaPeerable)

メソッド

名前 説明
Disposed()

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

(継承元 IJavaPeerable)
DisposeUnlessReferenced()

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

(継承元 IJavaPeerable)
Execute(IRunnable)

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

Finalized()

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

(継承元 IJavaPeerable)
SetJniIdentityHashCode(Int32)

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

(継承元 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

送信された Runnable タスクを実行するオブジェクト。

(継承元 IJavaPeerable)
SetPeerReference(JniObjectReference)

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

(継承元 IJavaPeerable)
UnregisterFromRuntime()

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

(継承元 IJavaPeerable)

拡張メソッド

名前 説明
GetJniTypeName(IJavaPeerable)

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

JavaAs<TResult>(IJavaPeerable)

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

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

送信された Runnable タスクを実行するオブジェクト。

TryJavaCast<TResult>(IJavaPeerable, TResult)

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

適用対象