一:cpu密集型任務與IO密集型任務
如果想合理的配置線程池,就需要了解我們任務的類型,是CPU密集型還是IO密集型,
CPU 密集型任務主要時間花費在計算上面,內存、硬盤、網絡占用的時間少於cpu本身計算的時間,這時應配置盡可能小的線程,
避免線程之間頻繁的切換消耗資源,如配置 Ncpu+1 個線程的線程池。
由於 IO 密集型任務線程並不是一直在執行任務,cpu的性能,消耗的時間少於請求內存、硬盤、網絡的時間,這時大部分時間cpu處於空閑狀態,
則應配置盡可能多的線程,如 2*Ncpu。
什么是cpu密集型和IO密集型,參考: https://www.cnblogs.com/aspirant/p/11441353.html
二:舉例
1:依賴數據庫連接池的任務,因為線程提交 SQL 后需要等待數據庫返回結果, 等待的時間越長,則 CPU 空閑時間就越長,
那么線程數應該設置得越大,這樣 才能更好地利用 CPU。