該文章用於整理線程池和demo,大部分文字選取媽媽再也不用擔心你不會使用線程池了(ThreadUtils) - 簡書 (jianshu.com),大家可以直接觀看該文章,後面我會針對該作者寫的線程池工具類寫一個詳細的思路解釋
線程池由來
在上一篇文章中,使用線程需要new Thread,如果在一個程序中需要多次使用線程,便意味着需要多次創建並銷燬線程。而創建並銷燬線程的過程都會消耗內存,而在java中也是極其看重內存資源的,所以就有了線程池的概念
線程池優點
- 降低消耗資源,通過重複利用已創建的線程降低了創建-銷燬的消耗
- 提高響應速度,當需要異步的時候直接調用省去創建的流程
- 提高管理性,線程池裏面的所有線程可以統一分配、監控
創建線程池
我們創建時,一般使用它的子類:ThreadPoolExecutor. 結構如下
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler)