【Java併發】Java中的執行緒池
阿新 • • 發佈:2018-12-03
Java中的執行緒池
執行流程
處理流程如下:
execute()方法執行示意圖如下:
執行緒池的建立
-
corePoolSize:執行緒池的基本大小
-
workQueue:用於儲存等待執行的任務的阻塞佇列
- ArrayBlockingQueue:基於陣列結構的有界阻塞佇列
- LinkedBlockingQueue:基於連結串列結構的無界阻塞佇列
- SynchronousQueue:無容量的阻塞佇列
- PriorityBlockingQueue:具有優先順序的無界阻塞隊
-
maximumPoolSize:執行緒池允許建立的最大執行緒數。
-
ThreadFactory:用於設定建立執行緒的工廠,可以通過執行緒工廠給每個創建出來的執行緒設定更有意義的名字。
-
RejectedExecutionHandler:當佇列和執行緒池都滿了,會採取某種策略去執行新的任務。
- AbortPolicy:直接丟擲異常
- CallerRunsPolicy:呼叫者所在的執行緒執行任務
- DiscardOldestPolicy:丟棄佇列裡最近的一個任務,並執行當前任務
- DiscardPolicy:不處理,丟棄掉。
-
keepAliveTime:當執行緒的數量大於corePoolSize時,執行緒池的工作執行緒空閒後,保持存活的時間
-
TimeUnit:keepAliveTime的時間單位
提交任務
-
execute()方法用於提交不需要返回值的任務
-
submit()方法用於提交需要返回值的任務
關閉執行緒池
-
shutdown():停止所有沒有正在執行任務的執行緒
-
shutdownNow():嘗試停止所有的正在執行或暫停任務的執行緒
參考
- Java併發程式設計的藝術[書籍]