并发编程之线程池
一、線程池簡介
1.線程池狀態
1)Running:運行中
2)ShuttingDown:關閉中
3)Termitnaed:已關閉
2.線程池是進程級的重量級資源。生命周期默認和JVM一致。
3.線程池優缺點
? 1)降低資源消耗。通過重復利用已創建的線程降低線程創建和銷毀造成的消耗。
? 2)提高響應速度。當任務到達時,任務可以不需要等到線程創建就能立即執行。
? 3)提高線程的可管理性。
二、線程池的接口
1.executor:void execute(Runnable) 啟動線程任務。線程池頂級接口。唯一方法:execute()
調用者提供runnable接口的實現,線程池通過線程執行這個runnable。
2.executorService
void execute(Runnable)、Future submit(Callable)、Future submit(Runnable)。
3.Future:線程執行結束后的結果。
get():獲取結果
4.Callable:可執行接口。有返回值和異常。
5.Executors
工具類型,為Executor線程池提供工具方法。可以快速提供幾種線程池。
開始:創建線程池
結束:jvm關閉或調用shutdown并處理完所有任務。
三、四種線程池
1.FixedThreadPool:容量固定的線程池。推薦
? ?1)BlockingQueue<Runnable>:任務隊列。
? ? ? ?當任務數量大于線程池容量時,沒有運行的任務保存在任務隊列中。
? ? ? ?當有空閑線程時,自動從任務隊列取出任務執行。
2)queued.tasks:任務隊列。
? ?completed.tasks:結束任務隊列。計數
2.CachedThreadPool:緩存線程池。
? 1)自動擴容。
? 2)默認線程空閑60s自動銷毀。
? 應用場景:內部或測試應用。
3.ScheduledThreadPool:計劃任務線程池。
? 1)根據計劃自動執行任務的線程池。定時完成任務。
? 2)阻塞式。
? 應用場景:計劃任務時選用(DelaydQueue)。
4.SingleThreadExecutor:單一容量的線程池。
?應用場景:保證任務順序時選用。游戲中的喇叭,秒殺。
?
轉載于:https://www.cnblogs.com/wenxiangchen/p/11333191.html
總結
- 上一篇: 分布式常见问题解决方案
- 下一篇: 并发编程之并发容器