天天看點

建立自定義線程池

1. 建立一個單例模式的自定義線程池類

2. 定義一些基本類型來和線程池進行通訊

看到上面的代碼了嗎?<code>UserTask</code>是一個代理,代表了線程池中線程将要執行的任務。

3. 接下來我們給我們的自定義線程池類增加一些公共接口的方法

 4. 下面是線程池需要使用的一些内部類和類型

5. 下面我們需要做的是線程池的初始化工作,并且初始化任務隊列

  上面需要特别注意的是,taskScheduler這個線程類對象。

  這是始終貫穿線程池生命周期的一個額外的線程,也可以說是主線程。

它的任務是監視使用者任務隊列,并且盡快地把它們帶去執行,另外它還負責強制最大和最小

線程數的限制,做一些清理工作。

6. 接着就是實作線程初始化了,我們使用的是就近完成算法

7. 使用者任務隊列實作

8. 最後便是測試代碼