实际开发什么场景用到线程池_线程池的具体业务场景分析
如今,通過線程池最大程度利用CPU的多核性能是十分常見的基礎操作。與此同時線程池的優勢是顯而易見的,它可以降低系統資源消耗,提高系統響應速度,方便線程并發數的管控等等。那么線程池的實現是怎么樣的呢?本文將帶大家分析線程池的具體業務場景,現在讓我們開始吧~
一、業務場景
快速響應用戶請求是線程池十分常見的業務場景。具體來講就是用戶發起的實時請求,服務追求響應時間。比如說用戶要查看一個商品的信息,那么我們需要將商品維度的一系列信息如商品的價格、優惠、庫存、圖片等等聚合起來,展示給用戶。
除此之外,快速處理批量任務也是我們會遇到的業務場景。離線的大量計算任務,需要快速執行。比如說,統計某個報表,需要計算出全國各個門店中有哪些商品有某種屬性,用于后續營銷策略的分析,那么我們需要查詢全國所有門店中的所有商品,并且記錄具有某屬性的商品,然后快速生成報表。
二、使用分析
針對快速響應用戶請求的業務場景,我們應該從用戶體驗角度看,這個結果響應的越快越好,如果一個頁面半天都刷不出,用戶可能就放棄查看這個商品了。而面向用戶的功能聚合通常非常復雜,伴隨著調用與調用之間的級聯、多級級聯等情況,業務開發同學往往會選擇使用線程池這種簡單的方式,將調用封裝成任務并行的執行,縮短總體響應時間。另外,使用線程池也是有考量的,這種場景最重要的就是獲取最大的響應速度去滿足用戶,所以應該不設置隊列去緩沖并發任務,調高corePoolSize和maxPoolSize去盡可能創造多的線程快速執行任務。
至于快速處理批量任務,這種場景需要執行大量的任務,我們也會希望任務執行的越快越好。這種情況下,也應該使用多線程策略,并行計算。但與響應速度優先的場景區別在于,這類場景任務量巨大,并不需要瞬時的完成,而是關注如何使用有限的資源,盡可能在單位時間內處理更多的任務,也就是吞吐量優先的問題。所以應該設置隊列去緩沖并發任務,調整合適的corePoolSize去設置處理任務的線程數。在這里,設置的線程數過多可能還會引發線程上下文切換頻繁的問題,也會降低處理任務的速度,降低吞吐量。
三、結論與反思
線程池使用面臨的核心的問題在于線程池的參數并不好配置。一方面線程池的運行機制不是很好理解,配置合理需要強依賴開發人員的個人經驗和知識;另一方面,線程池執行的情況和任務類型相關性較大,IO密集型和CPU密集型的任務運行起來的情況差異非常大,這導致業界并沒有一些成熟的經驗策略幫助開發人員參考。
總結
以上是生活随笔為你收集整理的实际开发什么场景用到线程池_线程池的具体业务场景分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python自动源码_谷歌推出Tange
- 下一篇: 树莓派该文件名_树莓派学习笔记(2):常