線程的個數怎麼設置

  • 數據庫連接池的個數

  • tomcat的請求連接數

  • 線程池的線程數

  • waiting狀態的線程會不會進行CPU切換??(寫代碼驗證)

在許多場景下,讓計算機同時去做幾件事情,不僅是因爲計算機的運算能力強大了,還有一個很重要的原因是計算機的運算速度與它的存儲和通信子系統的速度差距太大,大量的時間都花費在磁盤I/O、網絡通信或者數據庫訪問上。如果不希望處理器在大部分時間裏都處於等待其他資源的空閒狀態,就必須使用一些手段去把處理器的運算能力“壓榨”出來,否則就會造成很大的性能浪費,而讓計算機同時處理幾項任務則是最容易想到,也被證明是非常有效的“壓榨”手段。

java設置線程池大小,這裏提供三個考量點:

  1,一般情況程序線程數等於cpu線程數的兩到三倍就能很好的利用cpu了

  2,一個公式:線程池設定最佳線程數目 = ((線程池設定的線程等待時間+線程CPU時間)/線程CPU時間 )* CPU數目

    這個公式的線程cpu時間是預估的程序單個線程在cpu上運行的時間(通常使用loadrunner測試大量運行次數求出平均值)

 3,上面兩個方案都是參考而已,給出個大概範圍,最後最佳的線程池設定大小還是要根據實際情況,多次實驗。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章