IScheduledExecutorService 介面
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
一個 ExecutorService 可以排程指令在特定延遲後執行,或定期執行的指令。
[Android.Runtime.Register("java/util/concurrent/ScheduledExecutorService", "", "Java.Util.Concurrent.IScheduledExecutorServiceInvoker")]
public interface IScheduledExecutorService : IDisposable, Java.Interop.IJavaPeerable, Java.Util.Concurrent.IExecutorService
[<Android.Runtime.Register("java/util/concurrent/ScheduledExecutorService", "", "Java.Util.Concurrent.IScheduledExecutorServiceInvoker")>]
type IScheduledExecutorService = interface
interface IExecutorService
interface IExecutor
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 衍生
- 屬性
- 實作
備註
一個 ExecutorService 可以排程指令在特定延遲後執行,或定期執行的指令。
這些 schedule 方法會產生具有不同延遲的任務,並回傳一個任務物件,可用來取消或檢查執行。
scheduleAtFixedRate和 scheduleWithFixedDelay 方法會建立並執行任務,這些任務會定期執行直到被取消。
使用 and Executor#execute(Runnable)ExecutorServicesubmit 方法提交的指令會以請求延遲為零的排程。 方法中也允許 schedule 零延遲與負延遲(但不允許週期),並視為立即執行的請求。
所有schedule方法都接受<>相對</延遲>與週期作為論證,而非絕對時間或日期。 將以 java.util.Date 表示的絕對時間轉換為所需形式是簡單的事。 例如,要在某個未來 date排程,你可以使用: schedule(task, date.getTime() - System.currentTimeMillis(), TimeUnit.MILLISECONDS)。 但請注意,相對延遲的到期時間不必與任務啟用的電流 Date 重合,這是網路時間同步協定、時鐘漂移或其他因素所致。
這個 Executors 類別為本套件中提供的 ScheduledExecutorService 實作提供了方便的工廠方法。
<h2>使用範例</h2>
這裡有一個類別,裡面有一個方法可以設定一個 ScheduledExecutorService,每十秒發出嗶嗶聲,持續一小時:
{@code
import static java.util.concurrent.TimeUnit.*;
class BeeperControl {
private final ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(1);
public void beepForAnHour() {
Runnable beeper = () -> System.out.println("beep");
ScheduledFuture<?> beeperHandle =
scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);
Runnable canceller = () -> beeperHandle.cancel(false);
scheduler.schedule(canceller, 1, HOURS);
}
}}
已在1.5中新增。
Java 文件 java.util.concurrent.ScheduledExecutorService。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
屬性
| 名稱 | Description |
|---|---|
| Handle |
取得底層 Android 物件的 JNI 值。 (繼承來源 IJavaObject) |
| IsShutdown |
如果該執行人已被關閉,則會退貨 |
| IsTerminated |
關閉後所有任務都完成後,會回傳 |
| JniIdentityHashCode |
回傳包裹實例的 |
| JniManagedPeerState |
管理貴族的狀況。 (繼承來源 IJavaPeerable) |
| JniObjectReferenceControlBlock |
一個 |
| JniPeerMembers |
成員存取與召喚支援。 (繼承來源 IJavaPeerable) |
| PeerReference |
回傳JniObjectReference包裹後的 Java 物件實例。 (繼承來源 IJavaPeerable) |
方法
| 名稱 | Description |
|---|---|
| AwaitTermination(Int64, TimeUnit) |
在關閉請求後所有任務完成執行、逾時發生或當前執行緒中斷(以先發生者為準)為止。 (繼承來源 IExecutorService) |
| Close() |
啟動有序關機,執行先前提交的任務,但不再接受新的任務。 (繼承來源 IExecutorService) |
| Disposed() |
當實例被處理後才被召喚。 (繼承來源 IJavaPeerable) |
| DisposeUnlessReferenced() |
如果沒有未解決的參考資料,則 |
| Execute(IRunnable) |
在未來某個時間執行給定指令。 (繼承來源 IExecutor) |
| Finalized() |
當實例完成後才會被通知。 (繼承來源 IJavaPeerable) |
| InvokeAll(ICollection, Int64, TimeUnit) |
執行指定任務,並在所有任務完成或超時結束時(以先發生者為準)返回一份保存狀態與結果的未來清單。 (繼承來源 IExecutorService) |
| InvokeAll(ICollection) |
執行指定任務,完成後回傳一份包含狀態與結果的未來清單。 (繼承來源 IExecutorService) |
| InvokeAny(ICollection, Int64, TimeUnit) |
執行給定任務,並回傳成功完成的任務結果(i. (繼承來源 IExecutorService) |
| InvokeAny(ICollection) |
執行給定任務,並回傳成功完成的任務結果(i. (繼承來源 IExecutorService) |
| Schedule(ICallable, Int64, TimeUnit) |
提交一個能回傳價值的一次性任務,該任務在指定延遲後啟用。 |
| Schedule(IRunnable, Int64, TimeUnit) |
提交一個一次性任務,該任務在指定延遲後啟用。 |
| ScheduleAtFixedRate(IRunnable, Int64, Int64, TimeUnit) |
提交一個週期性行動,該動作在給定的初始延遲後先啟用,隨後在指定期間內生效;也就是說,執行會在 |
| ScheduleWithFixedDelay(IRunnable, Int64, Int64, TimeUnit) |
提交一個週期性行動,該動作在給定的初始延遲後先被啟用,隨後在一次執行終止與下一次執行開始之間的指定延遲中啟用。 |
| SetJniIdentityHashCode(Int32) |
將回傳的值設為 |
| SetJniManagedPeerState(JniManagedPeerStates) |
一個 |
| SetPeerReference(JniObjectReference) |
將回傳的值設為 |
| Shutdown() |
啟動有序關機,執行先前提交的任務,但不再接受新的任務。 (繼承來源 IExecutorService) |
| ShutdownNow() |
嘗試停止所有正在執行的任務,停止等待任務的處理,並回傳等待執行的任務清單。 (繼承來源 IExecutorService) |
| Submit(ICallable) |
提交一個值回傳任務以供執行,並回傳一個代表該任務待處理結果的未來。 (繼承來源 IExecutorService) |
| Submit(IRunnable, Object) |
提交一個可執行的任務,並回傳代表該任務的 Future。 (繼承來源 IExecutorService) |
| Submit(IRunnable) |
提交一個可執行的任務,並回傳代表該任務的 Future。 (繼承來源 IExecutorService) |
| UnregisterFromRuntime() |
取消註冊此實例,讓執行時不會在未來 Java.Interop.JniRuntime+JniValueManager.PeekValue 的呼叫中回傳該實例。 (繼承來源 IJavaPeerable) |
擴充方法
| 名稱 | Description |
|---|---|
| AwaitTerminationAsync(IExecutorService, Int64, TimeUnit) |
一個 |
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| InvokeAnyAsync(IExecutorService, ICollection, Int64, TimeUnit) |
一個 |
| InvokeAnyAsync(IExecutorService, ICollection) |
一個 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
一個 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |