下面是幾個Java線程池的問題,大家嘗試回答一下:
1 使用線程池比手動創建線程好在哪裏?
2 線程池的各個參數的含義?
3 線程池有哪 4 種拒絕策略?
4 有哪 6 種常見的線程池?什麼是 Java8 的 ForkJoinPool?
5 線程池常用的阻塞隊列有哪些?
6 爲什麼不應該自動創建線程池?
7 合適的線程數量是多少?CPU 核心數和線程數的關係?
8 如何根據實際需要,定製自己的線程池?
9 如何正確關閉線程池?shutdown 和 shutdownNow 的區別?
10 線程池實現“線程複用”的原理?
Q1:使用線程池比手動創建線程好在哪裏?
A1.1、複用線程以降低資源消耗
降低創建、消耗線程都要消耗系統資源(CPU、內存)
A1.2、提高響應速度
任務到達時不需要臨時創建線程
A1.3、提升線程的可管理性
線程代表着CPU和內存消耗,線程池管理(統一分配、調優、監控)了線程也就管理了CPU和內存消耗