ScheduledThreadPoolExecutor 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
ThreadPoolExecutor此外,還能排程指令在指定延遲後執行,或定期執行。
[Android.Runtime.Register("java/util/concurrent/ScheduledThreadPoolExecutor", DoNotGenerateAcw=true)]
public class ScheduledThreadPoolExecutor : Java.Util.Concurrent.ThreadPoolExecutor, IDisposable, Java.Util.Concurrent.IScheduledExecutorService
[<Android.Runtime.Register("java/util/concurrent/ScheduledThreadPoolExecutor", DoNotGenerateAcw=true)>]
type ScheduledThreadPoolExecutor = class
inherit ThreadPoolExecutor
interface IScheduledExecutorService
interface IExecutorService
interface IExecutor
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 繼承
- 屬性
- 實作
備註
ThreadPoolExecutor此外,還能排程指令在指定延遲後執行,或定期執行。 此類別比 java.util.Timer 需要多個工作執行緒,或需要額外彈性或功能 ThreadPoolExecutor (此類別所擴充)時更為可取。
延遲任務會在啟用後立即執行,但無法即時保證啟用後何時開始。 排程執行時間完全相同的任務,依照先入先出(FIFO)提交順序啟用。
當提交的任務在執行前被取消時,執行會被抑制。 預設情況下,這類被取消的任務直到延遲結束後才會自動從工作佇列中移除。 雖然這有助於進一步檢查與監控,但也可能造成已取消任務的無限保留。
週期性任務的連續執行與排程或#scheduleAtFixedRate scheduleAtFixedRate#scheduleWithFixedDelay scheduleWithFixedDelay不重疊。 雖然不同執行可能由不同執行緒執行,但先前<><執行的影響會發生在前或>後續執行的影響。
雖然此類別繼承自 ThreadPoolExecutor,但部分繼承的調音方法對此並不實用。 特別是因為它作為一個固定大小的池,使用執行 corePoolSize 緒和無界佇列,調整不會 maximumPoolSize 有實質效果。 此外,幾乎從來不建議將 0 設 corePoolSize 為零或使用 allowCoreThreadTimeOut ,因為這可能會讓池子在任務達到執行資格時失去執行緒來處理。
如同 ThreadPoolExecutor,若未另行指定,此類別作為預設執行緒工廠,並Executors#defaultThreadFactory作為ThreadPoolExecutor.AbortPolicy預設拒絕的執行處理器。
<b>擴充說明:</b> 此類別覆蓋 ThreadPoolExecutor#execute(Runnable) execute 和 AbstractExecutorService#submit(Runnable) submit 方法,以產生內部 ScheduledFuture 物件以控制各任務延遲與排程。 為了保留功能,子類別中對這些方法的後續覆寫必須呼叫超類別版本,這實際上會使額外的任務自訂功能失效。 然而,此類別提供替代的受保護擴充方法decorateTask(對 和 Runnable各一個版本Callable),可用來自訂執行透過 execute、 submit、 schedulescheduleAtFixedRatescheduleWithFixedDelay及 輸入的具體任務類型。 預設情況下,a ScheduledThreadPoolExecutor 使用擴展 的任務類型。FutureTask 然而,這可以用以下形式的子類進行修改或替換:
{@code
public class CustomScheduledExecutor extends ScheduledThreadPoolExecutor {
static class CustomTask<V> implements RunnableScheduledFuture<V> { ... }
protected <V> RunnableScheduledFuture<V> decorateTask(
Runnable r, RunnableScheduledFuture<V> task) {
return new CustomTask<V>(r, task);
}
protected <V> RunnableScheduledFuture<V> decorateTask(
Callable<V> c, RunnableScheduledFuture<V> task) {
return new CustomTask<V>(c, task);
}
// ... add constructors, etc.
}}
已在1.5中新增。
Java 文件 java.util.concurrent.ScheduledThreadPoolExecutor。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
建構函式
| 名稱 | Description |
|---|---|
| ScheduledThreadPoolExecutor(Int32, IRejectedExecutionHandler) |
建立 |
| ScheduledThreadPoolExecutor(Int32, IThreadFactory, IRejectedExecutionHandler) |
建立 |
| ScheduledThreadPoolExecutor(Int32, IThreadFactory) |
建立 |
| ScheduledThreadPoolExecutor(Int32) |
建立一個與特定核心池大小相同的新 |
| ScheduledThreadPoolExecutor(IntPtr, JniHandleOwnership) |
建立 JNI 物件的 Managed 表示法時使用的建構函式;由運行時間呼叫。 |
屬性
| 名稱 | Description |
|---|---|
| ActiveCount |
回傳正在執行任務的執行緒數量。 (繼承來源 ThreadPoolExecutor) |
| Class |
傳回這個 |
| CompletedTaskCount |
回傳已完成執行任務的大致總數。 (繼承來源 ThreadPoolExecutor) |
| ContinueExistingPeriodicTasksAfterShutdownPolicy |
取得是否繼續執行現有定期任務的政策,即使該執行者已經 |
| CorePoolSize |
回傳核心執行緒數。 -或- 設定執行緒的核心數量。 (繼承來源 ThreadPoolExecutor) |
| ExecuteExistingDelayedTasksAfterShutdownPolicy |
取得是否執行已延遲任務的政策,即使該執行者已執行 |
| Handle |
基礎Android實例的句柄。 (繼承來源 Object) |
| IsShutdown | (繼承來源 ThreadPoolExecutor) |
| IsTerminated | (繼承來源 ThreadPoolExecutor) |
| IsTerminating |
若該執行人正在終止或 |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
|
| JniPeerMembers |
|
| LargestPoolSize |
回傳有史以來同時進入池中最多的執行緒。 (繼承來源 ThreadPoolExecutor) |
| MaximumPoolSize |
回傳最大允許執行緒數。 -或- 設定最大允許執行緒數。 (繼承來源 ThreadPoolExecutor) |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| PoolSize |
回傳池中目前執行緒的數量。 (繼承來源 ThreadPoolExecutor) |
| Queue |
回傳該執行者使用的任務佇列。 (繼承來源 ThreadPoolExecutor) |
| RejectedExecutionHandler |
回傳目前無法執行任務的處理器。 -或- 為不可執行任務設定新的處理器。 (繼承來源 ThreadPoolExecutor) |
| RemoveOnCancelPolicy |
了解取消任務是否應該在取消時立即從工作佇列中移除的政策。 -或- 設定取消任務在取消時是否應立即從工作佇列中移除的政策。 |
| TaskCount |
回傳曾經排程執行過的任務總數。 (繼承來源 ThreadPoolExecutor) |
| ThreadFactory |
回傳用於建立新執行緒的執行緒工廠。 -或- 設定用於建立新執行緒的執行緒工廠。 (繼承來源 ThreadPoolExecutor) |
| ThresholdClass |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
| ThresholdType |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
方法
| 名稱 | Description |
|---|---|
| AfterExecute(IRunnable, Throwable) |
執行完成給定 Runnable 後會呼叫的方法。 (繼承來源 ThreadPoolExecutor) |
| AllowCoreThreadTimeOut(Boolean) |
設定政策,規定若核心執行緒在保持有效時間內無任務抵達,是否可逾時終止,若有新任務抵達,則可重新啟用。 (繼承來源 ThreadPoolExecutor) |
| AllowsCoreThreadTimeOut() |
若此池允許核心執行緒逾時,則在 keepAlive 時間內無任務抵達時終止,若有新任務到達,則會被替換。 (繼承來源 ThreadPoolExecutor) |
| AwaitTermination(Int64, TimeUnit) | (繼承來源 ThreadPoolExecutor) |
| AwaitTerminationAsync(Int64, TimeUnit) |
|
| BeforeExecute(Thread, IRunnable) |
在執行給定執行緒中執行給定 Runnable 之前,呼叫的方法。 (繼承來源 ThreadPoolExecutor) |
| Clone() |
建立並傳回這個 對象的複本。 (繼承來源 Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
|
| DecorateTask(ICallable, IRunnableScheduledFuture) |
修改或替換用於執行可呼叫的任務。 |
| DecorateTask(IRunnable, IRunnableScheduledFuture) |
修改或替換用於執行可執行的任務。 |
| Dispose() |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| Dispose(Boolean) |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| DisposeUnlessReferenced() |
|
| Equals(Object) |
|
| Equals(Object) |
指出其他物件是否「等於」這個物件。 (繼承來源 Object) |
| Execute(IRunnable) |
未來某個時候執行該任務。 (繼承來源 ThreadPoolExecutor) |
| GetHashCode() |
傳回此物件的雜湊碼值。 (繼承來源 Object) |
| GetKeepAliveTime(TimeUnit) |
回傳執行緒保持存活時間,也就是執行緒在終止前可閒置的時間。 (繼承來源 ThreadPoolExecutor) |
| InvokeAll(ICollection, Int64, TimeUnit) |
|
| InvokeAll(ICollection) |
|
| InvokeAny(ICollection, Int64, TimeUnit) |
|
| InvokeAny(ICollection) |
|
| JavaFinalize() |
當垃圾收集決定不再參考物件時,垃圾收集行程在 物件上呼叫。 (繼承來源 Object) |
| NewTaskFor(ICallable) |
回傳給定可呼叫任務的 a |
| NewTaskFor(IRunnable, Object) |
回傳給定可執行且預設值的 a |
| Notify() |
喚醒正在等候此物件監視器的單一線程。 (繼承來源 Object) |
| NotifyAll() |
喚醒正在等候此物件監視器的所有線程。 (繼承來源 Object) |
| PrestartAllCoreThreads() |
啟動所有核心執行緒,導致它們閒置等待工作。 (繼承來源 ThreadPoolExecutor) |
| PrestartCoreThread() |
啟動核心執行緒,導致它閒置等待工作。 (繼承來源 ThreadPoolExecutor) |
| Purge() |
嘗試從工作佇列中移除所有 |
| Remove(IRunnable) |
如果該任務存在,會從執行者的內部佇列中移除,因此如果任務尚未啟動,則不會執行。 (繼承來源 ThreadPoolExecutor) |
| Schedule(ICallable, Int64, TimeUnit) |
|
| Schedule(IRunnable, Int64, TimeUnit) |
創建並執行一個一次性動作,該動作在指定延遲後會被啟用。 |
| ScheduleAtFixedRate(IRunnable, Int64, Int64, TimeUnit) |
提交一個週期性行動,該動作在給定的初始延遲後先啟用,隨後在指定期間內生效;也就是說,執行會在 |
| ScheduleWithFixedDelay(IRunnable, Int64, Int64, TimeUnit) |
提交一個週期性行動,該動作在給定的初始延遲後先被啟用,隨後在一次執行終止與下一次執行開始之間的指定延遲中啟用。 |
| SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
| SetKeepAliveTime(Int64, TimeUnit) |
設定執行緒保持存活時間,也就是執行緒在終止前可閒置的時間。 (繼承來源 ThreadPoolExecutor) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
|
| Shutdown() |
啟動有序關機,執行先前提交的任務,但不再接受新的任務。 (繼承來源 ThreadPoolExecutor) |
| ShutdownNow() |
嘗試停止所有正在執行的任務,停止等待任務的處理,並回傳等待執行的任務清單。 (繼承來源 ThreadPoolExecutor) |
| Submit(ICallable) |
|
| Submit(IRunnable, Object) |
|
| Submit(IRunnable) |
提交一個可執行的任務,並回傳代表該任務的 Future。 (繼承來源 AbstractExecutorService) |
| Terminated() |
當執行人終止時會被呼叫的方法。 (繼承來源 ThreadPoolExecutor) |
| ToArray<T>() |
從這個 Java 陣列包裝器建立一個受管理陣列。 (繼承來源 Object) |
| ToString() |
傳回物件的字串表示。 (繼承來源 Object) |
| UnregisterFromRuntime() |
將此 Java 節點從互通執行時中取消註冊。 (繼承來源 Object) |
| Wait() |
讓目前線程等候直到喚醒為止,通常是藉由em <notified/em>或<em>interrupted</em> 來喚醒它。<> (繼承來源 Object) |
| Wait(Int64, Int32) |
讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。 (繼承來源 Object) |
| Wait(Int64) |
讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。 (繼承來源 Object) |
明確介面實作
| 名稱 | Description |
|---|---|
| IJavaPeerable.Disposed() |
|
| IJavaPeerable.Finalized() |
|
| IJavaPeerable.JniObjectReferenceControlBlock |
|
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
|
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
|
| IJavaPeerable.SetPeerReference(JniObjectReference) |
|
| IJavaPeerable.UnregisterFromRuntime() |
|
擴充方法
| 名稱 | 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) |
試著強制 |