1. 程式人生 > >個人珍藏的80道多執行緒併發面試題(11-20答案解析)

個人珍藏的80道多執行緒併發面試題(11-20答案解析)

## 前言 個人珍藏的80道Java多執行緒/併發經典面試題,現在給出11-20的答案解析哈,並且上傳github哈~ > https://github.com/whx123/JavaHome [個人珍藏的80道多執行緒併發面試題(1-10答案解析)](https://juejin.im/post/6854573221258199048) ### 11、為什麼要用執行緒池?Java的執行緒池內部機制,引數作用,幾種工作阻塞佇列,執行緒池型別以及使用場景 回答這些點: - 為什麼要用執行緒池? - Java的執行緒池原理 - 執行緒池核心引數 - 幾種工作阻塞佇列 - 執行緒池使用不當的問題 - 執行緒池型別以及使用場景 #### 為什麼要用執行緒池? 執行緒池:一個管理執行緒的池子。 - 管理執行緒,避免增加建立執行緒和銷燬執行緒的資源損耗。 - 提高響應速度。 - 重複利用。 #### Java的執行緒池執行原理 ![](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/efe9ed82093e4c8bab768eac79dffed3~tplv-k3u1fbpfcp-zoom-1.image) 為了形象描述執行緒池執行,打個比喻: - 核心執行緒比作公司正式員工 - 非核心執行緒比作外包員工 - 阻塞佇列比作需求池 - 提交任務比作提需求 ![](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6ed3df3db91941e9b8d3e1078fdd02b5~tplv-k3u1fbpfcp-zoom-1.image) #### 執行緒池核心引數 ``` public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, Block