IExecutor 介面
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
一個執行已提交 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 任務的物件。 此介面提供一種將任務提交與執行機制(包括執行緒使用細節、排程等)分離的方式。通常使用 an Executor 來取代明確建立執行緒。 例如,你可能不對一組任務調 new Thread(new RunnableTask()).start() 用,而是使用:
{@code
Executor executor = anExecutor();
executor.execute(new RunnableTask1());
executor.execute(new RunnableTask2());
...}
然而,介面 Executor 並不嚴格要求執行必須非同步。 在最簡單的情況下,執行者可以立即在呼叫者的執行緒中執行已提交的任務:
{@code
class DirectExecutor implements Executor {
public void execute(Runnable r) {
r.run();
}
}}
更常見的是,任務會在呼叫者執行緒以外的執行緒中執行。 以下執行者會為每個任務生成一個新的執行緒。
{@code
class ThreadPerTaskExecutor implements Executor {
public void execute(Runnable r) {
new Thread(r).start();
}
}}
許多 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 類別為這些執行者提供了方便的工廠方法。
記憶體一致性效應:在將Runnable物件提交給<Executor i 之前,執行緒中的動作會先於 i>發生<>,執行可能在另一個執行緒中開始。
已在1.5中新增。
Java 文件 java.util.concurrent.Executor。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
屬性
| 名稱 | Description |
|---|---|
| Handle |
取得底層 Android 物件的 JNI 值。 (繼承來源 IJavaObject) |
| JniIdentityHashCode |
回傳包裹實例的 |
| JniManagedPeerState |
管理貴族的狀況。 (繼承來源 IJavaPeerable) |
| JniObjectReferenceControlBlock |
一個執行已提交 |
| JniPeerMembers |
成員存取與召喚支援。 (繼承來源 IJavaPeerable) |
| PeerReference |
回傳JniObjectReference包裹後的 Java 物件實例。 (繼承來源 IJavaPeerable) |
方法
| 名稱 | Description |
|---|---|
| Disposed() |
當實例被處理後才被召喚。 (繼承來源 IJavaPeerable) |
| DisposeUnlessReferenced() |
如果沒有未解決的參考資料,則 |
| Execute(IRunnable) |
在未來某個時間執行給定指令。 |
| Finalized() |
當實例完成後才會被通知。 (繼承來源 IJavaPeerable) |
| SetJniIdentityHashCode(Int32) |
將回傳的值設為 |
| SetJniManagedPeerState(JniManagedPeerStates) |
一個執行已提交 |
| SetPeerReference(JniObjectReference) |
將回傳的值設為 |
| UnregisterFromRuntime() |
取消註冊此實例,讓執行時不會在未來 Java.Interop.JniRuntime+JniValueManager.PeekValue 的呼叫中回傳該實例。 (繼承來源 IJavaPeerable) |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
一個執行已提交 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |