线程池创建的具体流程分析(面试重点)

 线 程 池 默 认 初 始 化 后 不 启 动  Worker, 等 待 有 请 求 时 才 启
动 。
每 当 我 们 调 用  execute()  方 法 添 加 一 个 任 务 时 , 线 程 池 会 做 如 下 判
断 :

         如 果 正 在 运 行 的 线 程 数 量 小 于  corePoolSize, 那 么 马 上 创 建 线 程 运 行这 个 任 务 ;
     如 果 正 在 运 行 的 线 程 数 量 大 于 或 等 于  corePoolSize, 那 么 将 这 个 任 务放 入 队 列 ;
     如 果 这 时 候 队 列 满 了 , 而 且 正 在 运 行 的 线 程 数 量 小 于 maximumPoolSize, 那 么 还 是 要 创 建 非 核 心 线 程 立 刻 运 行 这 个 任 务 ;
     如 果 队 列 满 了 , 而 且 正 在 运 行 的 线 程 数 量 大 于 或 等 于maximumPoolSize, 那 么 线 程 池 会 抛 出 异 常
RejectExecutionException。

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