Share via


IExecutorService 介面

定義

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
衍生
屬性
實作

備註

Executor 提供方法來管理終止和方法,這些方法可以產生 Future 來追蹤一或多個非同步工作的進度。

ExecutorService可以關閉 ,這會導致它拒絕新的工作。 提供兩種不同的方法來關閉 ExecutorService 。 方法 #shutdown 會允許先前提交的工作在終止之前執行,而 #shutdownNow 方法會防止等候工作開始,並嘗試停止目前正在執行的工作。 終止時,執行程式沒有正在執行的工作、沒有等候執行的工作,也無法提交任何新工作。 應該關閉未使用的 ExecutorService ,以允許回收其資源。

方法 submit 會藉由建立和傳回可用來取消執行和/或等候完成的 來 Future 擴充基底方法 Executor#execute(Runnable)invokeAnyinvokeAll 方法和執行最常見的大量執行形式、執行工作集合,然後等候至少一或全部完成。 (類別 ExecutorCompletionService 可用來撰寫這些方法的自訂變體。)

類別 Executors 提供此套件中提供執行程式服務的 Factory 方法。

<h2 > 使用範例 < /h2>

以下是網路服務的草圖,其中線程集區服務傳入要求中的執行緒。 它會使用預先設定的 Executors#newFixedThreadPool Factory 方法:

{@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 ,首先呼叫 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();
              }
            }}

記憶體一致性效果:將 或 Callable 工作提交 Runnable 至 <ExecutorService i > 之前 <> 執行緒中的動作,該工作所採取的任何動作,接著會在透過 擷取 Future.get() 結果之前發生

在 1.5 中新增。

java.util.concurrent.ExecutorService JAVA 檔。

此頁面的部分是根據 原始碼專案所建立和共用的工作進行修改,並根據中所述的詞彙使用。

屬性

Handle

取得基礎 Android 物件的 JNI 值。

(繼承來源 IJavaObject)
IsShutdown

如果此執行程式已經關閉,則傳 true 回 。

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 提供方法來管理終止和方法,這些方法可以產生 Future 來追蹤一或多個非同步工作的進度。

(繼承來源 IJavaPeerable)
SetPeerReference(JniObjectReference)

設定 所 PeerReference 傳回的值。

(繼承來源 IJavaPeerable)
Shutdown()

起始已執行先前提交工作的依序關機,但不會接受任何新工作。

ShutdownNow()

嘗試停止所有主動執行的工作、停止等候工作的處理,並傳回等候執行的工作清單。

Submit(ICallable)

提交值傳回工作以供執行,並傳回代表工作暫止結果的 Future。

Submit(IRunnable)

提交可執行檔工作以供執行,並傳回代表該任務的未來。

Submit(IRunnable, Object)

提交可執行檔工作以供執行,並傳回代表該任務的未來。

UnregisterFromRuntime()

取消註冊此實例,讓執行時間不會從未來的 Java.Interop.JniRuntime+JniValueManager.PeekValue 調用傳回它。

(繼承來源 IJavaPeerable)

擴充方法

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

Executor 提供方法來管理終止和方法,這些方法可以產生 Future 來追蹤一或多個非同步工作的進度。

GetJniTypeName(IJavaPeerable)

Executor 提供方法來管理終止和方法,這些方法可以產生 Future 來追蹤一或多個非同步工作的進度。

AwaitTerminationAsync(IExecutorService, Int64, TimeUnit)

Executor 提供方法來管理終止和方法,這些方法可以產生 Future 來追蹤一或多個非同步工作的進度。

InvokeAnyAsync(IExecutorService, ICollection)

Executor 提供方法來管理終止和方法,這些方法可以產生 Future 來追蹤一或多個非同步工作的進度。

InvokeAnyAsync(IExecutorService, ICollection, Int64, TimeUnit)

Executor 提供方法來管理終止和方法,這些方法可以產生 Future 來追蹤一或多個非同步工作的進度。

適用於