更新時間:2020-05-13 11:42:51 來源:動力節點 瀏覽2555次
Javaweb項目視頻課程,線程池的業務場景,如今,通過線程池最大程度利用CPU的多核性能是十分常見的基礎操作。與此同時線程池的優勢是顯而易見的,它可以降低系統資源消耗,提高系統響應速度,方便線程并發數的管控等等。那么線程池的實現是怎么樣的呢?
一、業務場景
快速響應用戶請求是線程池十分常見的業務場景。具體來講就是用戶發起的實時請求,服務追求響應時間。比如說用戶要查看一個商品的信息,那么我們需要將商品維度的一系列信息如商品的價格、優惠、庫存、圖片等等聚合起來,展示給用戶。
除此之外,快速處理批量任務也是我們會遇到的業務場景。離線的大量計算任務,需要快速執行。比如說,統計某個報表,需要計算出全國各個門店中有哪些商品有某種屬性,用于后續營銷策略的分析,那么我們需要查詢全國所有門店中的所有商品,并且記錄具有某屬性的商品,然后快速生成報表。
二、使用分析
針對快速響應用戶請求的業務場景,我們應該從用戶體驗角度看,這個結果響應的越快越好,如果一個頁面半天都刷不出,用戶可能就放棄查看這個商品了。而面向用戶的功能聚合通常非常復雜,伴隨著調用與調用之間的級聯、多級級聯等情況,業務開發同學往往會選擇使用線程池這種簡單的方式,將調用封裝成任務并行的執行,縮短總體響應時間。另外,使用線程池也是有考量的,這種場景最重要的就是獲取最大的響應速度去滿足用戶,所以應該不設置隊列去緩沖并發任務,調高corePoolSize和maxPoolSize去盡可能創造多的線程快速執行任務。
至于快速處理批量任務,這種場景需要執行大量的任務,我們也會希望任務執行的越快越好。這種情況下,也應該使用多線程策略,并行計算。但與響應速度優先的場景區別在于,這類場景任務量巨大,并不需要瞬時的完成,而是關注如何使用有限的資源,盡可能在單位時間內處理更多的任務,也就是吞吐量優先的問題。所以應該設置隊列去緩沖并發任務,調整合適的corePoolSize去設置處理任務的線程數。在這里,設置的線程數過多可能還會引發線程上下文切換頻繁的問題,也會降低處理任務的速度,降低吞吐量。
三、結論與反思
線程池使用面臨的核心的問題在于線程池的參數并不好配置。一方面線程池的運行機制不是很好理解,配置合理需要強依賴開發人員的個人經驗和知識;另一方面,線程池執行的情況和任務類型相關性較大,IO密集型和CPU密集型的任務運行起來的情況差異非常大,這導致業界并沒有一些成熟的經驗策略幫助開發人員參考。
以上就是動力節點java培訓機構的小編針對“Javaweb項目視頻課程,線程池的業務場景”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
Javaweb項目相關視頻教程
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習