java的執行緒池是什麼,有哪些類型,作用分別是什麼 (建議學習:java課程)
執行緒池是一種多執行緒處理形式,處理過程中將任務新增佇列,然後在建立執行緒後自動啟動這些任務,每個執行緒都使用預設的堆疊大小,以預設的優先權運行,並處在多執行緒單元中,如果某個執行緒在託管程式碼中空閒,則執行緒池將插入另一個輔助執行緒來使所有處理器保持繁忙。
如果所有執行緒池都始終保持繁忙,但佇列中包含掛起的工作,則執行緒池將在一段時間後輔助執行緒的數目永遠不會超過最大值。超過最大值的執行緒可以排隊,但他們要等到其他執行緒完成後才能啟動。
java裡面的線程池的頂級介面是Executor,Executor不是線程池,而只是執行線程的工具,而真正的線程池是ExecutorService。
java中的有哪些執行緒池?
1.newCachedThreadPool建立一個可快取執行緒池程
2.newFixedThreadPool 建立一個定長線程池
3.newScheduledThreadPool 建立一個定長線程池
4.newSingleThreadExecutor 建立一個單執行緒化的執行緒池
#下一個分析:
newCachedThreadPool,是一種線程數量不定的線程池,並且其最大線程數為Integer.MAX_VALUE,這個數是很大的,一個可緩存線程池,如果線程池長度超過處理需要,可靈活回收空閒線程,若無可回收,則新建線程。但是線程池中的空閒線程都有超時限制,這個超時時長是60秒,超過60秒閒置線程就會被回收。
呼叫execute將重複使用先前建構的執行緒(如果執行緒可用)。這類執行緒池比較適合執行大量的耗時較少的任務,當整個執行緒池都處於閒置狀態時,執行緒池中的執行緒都會逾時被停止。
newFixedThreadPool 建立一個指定工作執行緒數量的執行緒池,每當提交任務就會建立一個工作線程,當執行緒處於空閒狀態時,它們並不會被回收,除非執行緒池被關閉了,如果工作執行緒數量達到執行緒池初始的最大數,則將提交的任務存入池隊列(沒有大小限制)。
由於newFixedThreadPool只有核心執行緒並且這些核心執行緒不會被回收,因此它更快速底對應外界的請求。
newScheduledThreadPool 建立一個執行緒池,它的核心執行緒數量是固定的,而非核心執行緒數是沒有限制的,並且當非核心執行緒閒置時會立即被回收,它可安排給定延遲後運行命令或定期執行。這類執行緒池主要用於執行定時任務和具有固定週期的重複任務。
newSingleThreadExecutor這類線程池內部只有一個核心線程,以無界隊列方式來執行該線程,這使得這些任務之間不需要處理線程同步的問題,它確保所有的任務都在同一個執行緒中按順序執行,並且可以在任意給定的時間不會有多個執行緒是活動的。
以上是java線程池是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!