回覆列表
  • 1 # colleen554

    newSingleThreadExecutor

    建立一個執行緒的執行緒池,在這個執行緒池中始終只有一個執行緒存在。如果執行緒池中的執行緒因為異常問題退出,那麼會有一個新的執行緒來替代它。此執行緒池保證所有任務的執行順序按照任務的提交順序執行。

    原始碼部分:

    2. newFixedThreadPool

    建立固定大小的執行緒池。每次提交一個任務就建立一個執行緒,直到執行緒達到執行緒池的最大大小。執行緒池的大小一旦達到最大值就會保持不變,如果某個執行緒因為執行異常而結束,那麼執行緒池會補充一個新執行緒。

    原始碼部分:

    3. newCachedThreadPool

    可根據實際情況,調整執行緒數量的執行緒池,執行緒池中的執行緒數量不確定,如果有空閒執行緒會優先選擇空閒執行緒,如果沒有空閒執行緒並且此時有任務提交會建立新的執行緒。在正常開發中並不推薦這個執行緒池,因為在極端情況下,會因為 newCachedThreadPool 建立過多執行緒而耗盡 CPU 和記憶體資源。

    原始碼部分:

    4. newScheduledThreadPool

    此執行緒池可以指定固定數量的執行緒來週期性的去執行。比如透過 scheduleAtFixedRate 或者 scheduleWithFixedDelay 來指定週期時間。

    PS:另外在寫定時任務時(如果不用 Quartz 框架),最好採用這種執行緒池來做,因為它可以保證裡面始終是存在活的執行緒的。

    原始碼如下:

  • 中秋節和大豐收的關聯?
  • 緊急緊急,諸位大佬,戀愛一週年給女友送什麼禮物好?