執行人

下面解釋的不同型別的 Threadpool 和佇列來自[oracle documentation] [1]和[Jakob Jenkov] [2]部落格的資訊和知識,你可以在 java 中學到很多關於併發性的知識。

不同型別的 ThreadPools

SingleThreadExecutor: Executor,它使用單個工作執行緒操作無限制佇列,並在需要時使用提供的 ThreadFactory 建立新執行緒。與其他等效的 newFixedThreadPool(1, threadFactory)不同,保證返回的執行程式不可重新配置為使用其他執行緒。

FixedThreadPool: 執行緒池,它重用在共享的無界佇列中執行的固定數量的執行緒,使用提供的 ThreadFactory 在需要時建立新執行緒。在任何時候,最多 nThreads 執行緒將是活動的處理任務。如果在所有執行緒都處於活動狀態時提交了其他任務,則它們將在佇列中等待,直到執行緒可用。如果任何執行緒由於在關閉之前執行期間的故障而終止,則如果需要執行後續任務,則新執行緒將取代它。池中的執行緒將一直存在,直到它被明確關閉。

CachedThreadPool: 根據需要建立新執行緒的執行緒池,但在它們可用時將重用先前構造的執行緒,並在需要時使用提供的 ThreadFactory 建立新執行緒。

SingleThreadScheduledExecutor: 單執行緒執行程式,可以排程命令在給定延遲後執行,或定期執行。 (但請注意,如果此單個執行緒由於在關閉之前執行期間的故障而終止,則在需要執行後續任務時將使用新的執行緒。)保證任務順序執行,並且不會有多個任務處於活動狀態在任何給定的時間。與其他等效的 newScheduledThreadPool(1, threadFactory)不同,保證返回的執行程式不可重新配置以使用其他執行緒。

ScheduledThreadPool: 執行緒池,可以排程命令在給定延遲後執行,或定期執行。不同型別的工作佇列