【Java 多線程併發】線程池原理

線程池做的工作主要是控制與逆行的線程數量,處理過程中將任務放入隊列,然後在線程創建後啓動這些任務,如果線程數量超過了最大數量,超出數量的線程排隊等待,等其他線程執行完畢,再從隊列中取出任務來執行。

他的主要特點爲:線程複用;控制最大併發數;管理線程

1.線程複用

每一個 Thread 的類都有一個 start 方法。

當調用 start 啓動線程時 Java 虛擬機會調用該類的 run 方法。那麼該類的 run() 方法中就是調用了 Runnable 對象的 run() 方法。

我們可以繼承重寫 Thread 類,在其 start 方法中不斷循環調用傳遞過來的 Runnable 對象,這就是線程池的實現原理。

循環方法中不斷獲取 Runnable 是用 Queue 實現的,在獲取下一個 Runnable 之前可以是阻塞的。

2.線程池的組成

 一般的線程池主要分爲以下 4 個組成部分:

1.線程池管理器:用於創建並管理線程池

2.工作線程:線程池中的線程

3.任務接口:每個任務必須實現的接口,用於工作線程調度其運行

4.任務隊列:用於存放待處理的任務,提供一種緩衝機制

Java 中的線程池是通過 Executor 框架實現的,該框架中用到了 Executor,Executors,ExecutorService,ThreadPoolExecutor,Callable 和 Future、FutureTask 這幾個類。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章