1. 建立一個單例模式的自定義線程池類
2. 定義一些基本類型來和線程池進行通訊
看到上面的代碼了嗎?<code>UserTask</code>是一個代理,代表了線程池中線程将要執行的任務。
3. 接下來我們給我們的自定義線程池類增加一些公共接口的方法
4. 下面是線程池需要使用的一些内部類和類型
5. 下面我們需要做的是線程池的初始化工作,并且初始化任務隊列
上面需要特别注意的是,taskScheduler這個線程類對象。
這是始終貫穿線程池生命周期的一個額外的線程,也可以說是主線程。
它的任務是監視使用者任務隊列,并且盡快地把它們帶去執行,另外它還負責強制最大和最小
線程數的限制,做一些清理工作。
6. 接着就是實作線程初始化了,我們使用的是就近完成算法
7. 使用者任務隊列實作
8. 最後便是測試代碼