java的對象池
發布時間: 2025-08-29 10:02:22
Ⅰ java 線程池機制的原理是什麼
線程池屬於對象池.所有對象池都具有一個非常重要的共性,就是為了最大程度復用對象.那麼線程池的最
重要的特徵也就是最大程度利用線程.
首先,創建線程本身需要額外(相對於執行任務而必須的資源)的開銷.
作業系統在每創建一個線程時,至少需要創建以下資源:
(1) 線程內核對象:用於對線程上下文的管理.
(2) 用戶模式執行棧.
(3) 內核模式執行棧.
這些資源被線程佔有後作業系統和用戶都無法使用.
相反的過程,銷毀線程需要回收資源,也需要一定開銷.
其次,過多的線程將導致過度的切換.線程切換帶來的性能更是不可估量.系統完成線程切換要經過以下過程:
(1) 從用戶模式切換到內核模式.
(2) 將CPU寄存器的值保存到當前線程的內核對象中.
(3)打開一個自旋鎖,根據調度策略決定下一個要執行的線程.釋放自旋鎖,如果要執行的線程不是同一進
程中的線程,還需要切換虛擬內存等進程環境.
(4) 將要執行的線程的內核對象的值寫到CPU寄存器中.
(5) 切換到用戶模式執行新線程的執行邏輯.
所以線程池的目的就是為了減少創建和切換線程的額外開銷,利用已經的線程多次循環執行多個任務從而提
高系統的處理能力.
熱點內容