ScheduledThreadPoolExecutor 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
, ThreadPoolExecutor 可額外排程在指定延遲之後執行的命令,或定期執行。
[Android.Runtime.Register("java/util/concurrent/ScheduledThreadPoolExecutor", DoNotGenerateAcw=true)]
public class ScheduledThreadPoolExecutor : Java.Util.Concurrent.ThreadPoolExecutor, IDisposable, Java.Interop.IJavaPeerable, 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 可額外排程在指定延遲之後執行的命令,或定期執行。 當需要多個背景工作線程,或需要此類別擴充的其他彈性或功能ThreadPoolExecutor時,最好java.util.Timer使用這個類別。
延遲的工作執行的時間不會早於啟用,但不會有任何實時保證,在啟用之後,它們就會開始。 排程為完全相同運行時間的工作會在提交順序先出 (FIFO) 中啟用。
在執行之前取消送出的工作時,會隱藏執行。 根據預設,這類已取消的工作不會自動從工作佇列中移除,直到其延遲經過為止。 雖然這可進行進一步的檢查和監視,但也可能會導致取消工作的未繫結保留。
透過或 #scheduleWithFixedDelay scheduleWithFixedDelay 未重疊排程#scheduleAtFixedRate scheduleAtFixedRate的定期工作連續執行。 雖然不同的執行可能會由不同的線程執行,但先前執行 <的效果 i>發生在<之前/i> 後續執行。
雖然這個類別繼承自 ThreadPoolExecutor,但其中一些繼承的微調方法並不適用於它。 特別是,因為它會做為使用 corePoolSize 線程和未系結佇列的固定大小的集區, maximumPoolSize 因此調整沒有有用的效果。 此外,將 設定 corePoolSize 為零或使用 allowCoreThreadTimeOut 幾乎永遠不會是個好主意,因為這可能會讓集區在符合執行資格后,讓集區沒有線程來處理工作。
如同 , ThreadPoolExecutor如果未指定,則這個類別會使用 Executors#defaultThreadFactory 做為預設線程處理站,以及 ThreadPoolExecutor.AbortPolicy 做為預設拒絕的執行處理程式。
<b>擴充功能附註:</b> 此類別會 ThreadPoolExecutor#execute(Runnable) execute 覆寫 和 AbstractExecutorService#submit(Runnable) submit 方法來產生內部 ScheduledFuture 物件,以控制每個工作延遲和排程。 若要保留功能,子類別中這些方法的任何進一步覆寫都必須叫用超類別版本,這實際上會停用其他工作自定義。 不過,這個類別提供替代的受保護擴充方法decorateTask(每個 和 Runnable Callable各有一個版本),可用來自定義用來執行透過execute、submit、、 schedulescheduleAtFixedRate和 scheduleWithFixedDelay輸入命令的具體工作類型。 根據預設,會 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.util.concurrent.ScheduledThreadPoolExecutorJava 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
建構函式
| ScheduledThreadPoolExecutor(Int32) |
使用指定的核心集區大小建立新的 |
| ScheduledThreadPoolExecutor(Int32, IRejectedExecutionHandler) |
使用指定的初始參數建立新的 |
| ScheduledThreadPoolExecutor(Int32, IThreadFactory) |
使用指定的初始參數建立新的 |
| ScheduledThreadPoolExecutor(Int32, IThreadFactory, IRejectedExecutionHandler) |
使用指定的初始參數建立新的 |
| ScheduledThreadPoolExecutor(IntPtr, JniHandleOwnership) |
建立 JNI 物件的 Managed 表示法時使用的建構函式;由運行時間呼叫。 |
屬性
| ActiveCount |
傳回正在執行工作的大約線程數目。 (繼承來源 ThreadPoolExecutor) |
| Class |
傳回這個 |
| CompletedTaskCount |
傳回已完成執行之工作的近似總數。 (繼承來源 ThreadPoolExecutor) |
| ContinueExistingPeriodicTasksAfterShutdownPolicy |
取得原則,指出是否要繼續執行現有的定期工作,即使這個執行程式已經 |
| CorePoolSize |
傳回線程的核心數目。 -或- 設定線程的核心數目。 (繼承來源 ThreadPoolExecutor) |
| ExecuteExistingDelayedTasksAfterShutdownPolicy |
取得原則,指出是否要執行現有的延遲工作,即使這個執行程式已經 |
| Handle |
基礎Android實例的句柄。 (繼承來源 Object) |
| IsShutdown |
, |
| IsTerminated |
, |
| IsTerminating |
如果這個執行程式在 或 |
| JniIdentityHashCode |
, |
| JniPeerMembers |
, |
| LargestPoolSize |
傳回已同時在集區中的最大線程數目。 (繼承來源 ThreadPoolExecutor) |
| MaximumPoolSize |
傳回允許的線程數目上限。 -或- 設定允許的線程數目上限。 (繼承來源 ThreadPoolExecutor) |
| PeerReference |
, |
| PoolSize |
傳回集區中目前線程數目。 (繼承來源 ThreadPoolExecutor) |
| Queue |
傳回這個執行程式所使用的工作佇列。 (繼承來源 ThreadPoolExecutor) |
| RejectedExecutionHandler |
傳回無法執行之工作的目前處理程式。 -或- 設定無法執行之工作的新處理程式。 (繼承來源 ThreadPoolExecutor) |
| RemoveOnCancelPolicy |
取得取消時是否應立即從工作佇列中移除已取消工作的原則。 -或- 設定取消時是否應立即從工作佇列中移除已取消工作的原則。 |
| TaskCount |
傳回已排程執行之工作的近似總數。 (繼承來源 ThreadPoolExecutor) |
| ThreadFactory |
傳回用來建立新線程的線程處理站。 -或- 設定用來建立新線程的線程處理站。 (繼承來源 ThreadPoolExecutor) |
| ThresholdClass |
此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。 |
| ThresholdType |
此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。 |
方法
| AfterExecute(IRunnable, Throwable) |
完成指定 Runnable 執行時叫用的方法。 (繼承來源 ThreadPoolExecutor) |
| AllowCoreThreadTimeOut(Boolean) |
設定原則,控制核心線程是否可能在保持運作時間內沒有工作到達時逾時和終止,並在新工作送達時視需要取代。 (繼承來源 ThreadPoolExecutor) |
| AllowsCoreThreadTimeOut() |
如果此集區允許核心線程逾時,如果keepAlive時間內沒有任何工作到達,則會傳回 true,並在新工作送達時視需要取代。 (繼承來源 ThreadPoolExecutor) |
| AwaitTermination(Int64, TimeUnit) |
, |
| AwaitTerminationAsync(Int64, TimeUnit) |
, |
| BeforeExecute(Thread, IRunnable) |
在指定線程中執行指定的 Runnable 之前叫用的方法。 (繼承來源 ThreadPoolExecutor) |
| Clone() |
建立並傳回這個 對象的複本。 (繼承來源 Object) |
| DecorateTask(ICallable, IRunnableScheduledFuture) |
修改或取代用來執行可呼叫的工作。 |
| DecorateTask(IRunnable, IRunnableScheduledFuture) |
修改或取代用來執行可執行的工作。 |
| Dispose() |
, |
| Dispose(Boolean) |
, |
| Equals(Object) |
指出其他物件是否「等於」這個物件。 (繼承來源 Object) |
| Execute(IRunnable) |
在未來某個時候執行指定的工作。 (繼承來源 ThreadPoolExecutor) |
| GetHashCode() |
傳回此物件的雜湊碼值。 (繼承來源 Object) |
| GetKeepAliveTime(TimeUnit) |
傳回線程保持運作時間,這是線程在終止之前可能保持閑置的時間量。 (繼承來源 ThreadPoolExecutor) |
| InvokeAll(ICollection) |
, |
| InvokeAll(ICollection, Int64, TimeUnit) |
, |
| InvokeAny(ICollection) |
, |
| InvokeAny(ICollection, Int64, TimeUnit) |
, |
| JavaFinalize() |
當垃圾收集決定不再參考物件時,垃圾收集行程在 物件上呼叫。 (繼承來源 Object) |
| NewTaskFor(ICallable) |
傳 |
| NewTaskFor(IRunnable, Object) |
傳 |
| 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) |
| Shutdown() |
起始依序關閉,在其中執行先前提交的工作,但不會接受任何新工作。 (繼承來源 ThreadPoolExecutor) |
| ShutdownNow() |
嘗試停止所有主動執行的工作、停止等候工作的處理,並傳回正在等候執行的工作清單。 (繼承來源 ThreadPoolExecutor) |
| Submit(ICallable) |
, |
| Submit(IRunnable) |
提交可執行的工作以供執行,並傳回代表該工作的 Future。 (繼承來源 AbstractExecutorService) |
| Submit(IRunnable, Object) |
, |
| Terminated() |
執行程序終止時叫用的方法。 (繼承來源 ThreadPoolExecutor) |
| ToArray<T>() |
, |
| ToString() |
傳回物件的字串表示。 (繼承來源 Object) |
| UnregisterFromRuntime() |
, |
| Wait() |
讓目前線程等候直到喚醒為止,通常是藉由em <notified/em>或<em>interrupted</em> 來喚醒它。<> (繼承來源 Object) |
| Wait(Int64) |
讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。 (繼承來源 Object) |
| Wait(Int64, Int32) |
讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。 (繼承來源 Object) |
明確介面實作
| IJavaPeerable.Disposed() |
, |
| IJavaPeerable.DisposeUnlessReferenced() |
, |
| IJavaPeerable.Finalized() |
, |
| IJavaPeerable.JniManagedPeerState |
, |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
, |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
, |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
, |
擴充方法
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時間檢查的類型轉換。 |
| JavaCast<TResult>(IJavaObject) |
, |
| GetJniTypeName(IJavaPeerable) |
, |
| AwaitTerminationAsync(IExecutorService, Int64, TimeUnit) |
, |
| InvokeAnyAsync(IExecutorService, ICollection) |
, |
| InvokeAnyAsync(IExecutorService, ICollection, Int64, TimeUnit) |
, |