個人珍藏的80道多執行緒併發面試題(11-20答案解析)
阿新 • • 發佈:2020-08-23
## 前言
個人珍藏的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