線程池創建的具體流程分析(面試重點)

 線 程 池 默 認 初 始 化 後 不 啓 動  Worker, 等 待 有 請 求 時 才 啓
動 。
每 當 我 們 調 用  execute()  方 法 添 加 一 個 任 務 時 , 線 程 池 會 做 如 下 判
斷 :

         如 果 正 在 運 行 的 線 程 數 量 小 於  corePoolSize, 那 麼 馬 上 創 建 線 程 運 行這 個 任 務 ;
     如 果 正 在 運 行 的 線 程 數 量 大 於 或 等 於  corePoolSize, 那 麼 將 這 個 任 務放 入 隊 列 ;
     如 果 這 時 候 隊 列 滿 了 , 而 且 正 在 運 行 的 線 程 數 量 小 於 maximumPoolSize, 那 麼 還 是 要 創 建 非 核 心 線 程 立 刻 運 行 這 個 任 務 ;
     如 果 隊 列 滿 了 , 而 且 正 在 運 行 的 線 程 數 量 大 於 或 等 於maximumPoolSize, 那 麼 線 程 池 會 拋 出 異 常
RejectExecutionException。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章