1. 程式人生 > 其它 >什麼是執行緒池 為什麼需要執行緒池?

什麼是執行緒池 為什麼需要執行緒池?

為什麼出現執行緒池?(首先說的是思想,然後是具體程式語言對於此的實現)

客戶端請求伺服器的服務的時候,可能有存在非常多的客戶端的請求,這些請求可能大部分都是一個短任務,也就是需要執行的時間比較短;

如果給每個客戶端的請求都建立一個執行緒的話,那麼對於伺服器的資源的消耗是十分巨大的,容易導致 OOM(建立銷燬執行緒本省是一種費時費力的操作) ,所以想到了指定執行緒的數量,使得執行緒進行復用;

新的任務來的時候 ,有空的執行緒的話,直接只用建立好的執行緒處理任務即可;
新的任務來了,但是沒有執行緒是空閒的話,排隊等待即可;

這樣保證了一定的執行效率,減少了沒有必要的建立大量的執行緒,使得,系統更加的穩定;

在不同的程式語言中,都是可以利用上面的執行緒池思想實現執行緒池的;
在 Java 中有相關的類可以建立執行緒池,裡面的構造方法可以自定義的創建出來執行緒;

Java 裡面的執行緒池

Java 可以使用 JUC 工具包下面的 ThreadPoolExecutor 工具類以及 Executor 工具類進行執行緒池的建立;

在阿里開發手冊中推薦使用 ThreadPoolExecutor 裡面的構造方法進行執行緒池的建立,不推薦使用 Executor 裡面的相關構造方法建立執行緒池;

Executor 裡面構造執行緒池是 ThreadPoolExecutor 7 個引數的定製化,限定相關的引數,實現了不同種類的執行緒池;