IExecutorService 介面
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
, 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)
。 invokeAny
invokeAll
方法和執行最常見的大量執行形式、執行工作集合,然後等候至少一或全部完成。 (類別 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 |
如果此執行程式已經關閉,則傳 |
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) |
提交可執行檔工作以供執行,並傳回代表該任務的未來。 |
Submit(IRunnable, Object) |
提交可執行檔工作以供執行,並傳回代表該任務的未來。 |
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) |
, |