1. 程式人生 > >【Java併發】Java中的執行緒池

【Java併發】Java中的執行緒池

Java中的執行緒池

執行流程

處理流程如下:
處理流程

execute()方法執行示意圖如下:
execute()方法執行示意圖

執行緒池的建立

  1. corePoolSize:執行緒池的基本大小

  2. workQueue:用於儲存等待執行的任務的阻塞佇列

  • ArrayBlockingQueue:基於陣列結構的有界阻塞佇列
  • LinkedBlockingQueue:基於連結串列結構的無界阻塞佇列
  • SynchronousQueue:無容量的阻塞佇列
  • PriorityBlockingQueue:具有優先順序的無界阻塞隊
  1. maximumPoolSize:執行緒池允許建立的最大執行緒數。

  2. ThreadFactory:用於設定建立執行緒的工廠,可以通過執行緒工廠給每個創建出來的執行緒設定更有意義的名字。

  3. RejectedExecutionHandler:當佇列和執行緒池都滿了,會採取某種策略去執行新的任務。

  • AbortPolicy:直接丟擲異常
  • CallerRunsPolicy:呼叫者所在的執行緒執行任務
  • DiscardOldestPolicy:丟棄佇列裡最近的一個任務,並執行當前任務
  • DiscardPolicy:不處理,丟棄掉。
  1. keepAliveTime:當執行緒的數量大於corePoolSize時,執行緒池的工作執行緒空閒後,保持存活的時間

  2. TimeUnit:keepAliveTime的時間單位

提交任務

  1. execute()方法用於提交不需要返回值的任務

  2. submit()方法用於提交需要返回值的任務

關閉執行緒池

  1. shutdown():停止所有沒有正在執行任務的執行緒

  2. shutdownNow():嘗試停止所有的正在執行或暫停任務的執行緒

參考

  1. Java併發程式設計的藝術[書籍]