摘要: 我們根據線程池的要求也很能夠猜測出其數據結構出來。
線程池需要支持多個線程并發執行,因此有一個線程集合Collection來執行線程任務;
涉及任務的異步執行,因此需要有一個集合來緩存任務隊列Collection;
很顯然在多個線程之間協調多個任務,那么就需要一個線程安全的任務集合,同時還需要支持阻塞、超時操作,那么BlockingQueue是必不可少的;
既然是線程池,出發點就是提高系統性能同時降低資源消耗,那么線程池的大小就有限制,因此需要有一個核心線程池大小(線程個數)和一個最大線程池大小(線程個數),有一個計數用來描述當前線程池大小;
如果是有限的線程池大小,那么長時間不使用的線程資源就應該銷毀掉,這樣就需要一個線程空閑時間的計數來描述線程何時被銷毀;
前面描述過線程池也是有生命周期的,因此需要有一個狀態來描述線程池當前的運行狀態;
線程池的任務隊列如果有邊界,那么就需要有一個任務拒絕策略來處理過多的任務,同時在線程池的銷毀階段也需要有一個任務拒絕策略來處理新加入的任務;
上面種 閱讀全文
線程池需要支持多個線程并發執行,因此有一個線程集合Collection
涉及任務的異步執行,因此需要有一個集合來緩存任務隊列Collection
很顯然在多個線程之間協調多個任務,那么就需要一個線程安全的任務集合,同時還需要支持阻塞、超時操作,那么BlockingQueue是必不可少的;
既然是線程池,出發點就是提高系統性能同時降低資源消耗,那么線程池的大小就有限制,因此需要有一個核心線程池大小(線程個數)和一個最大線程池大小(線程個數),有一個計數用來描述當前線程池大小;
如果是有限的線程池大小,那么長時間不使用的線程資源就應該銷毀掉,這樣就需要一個線程空閑時間的計數來描述線程何時被銷毀;
前面描述過線程池也是有生命周期的,因此需要有一個狀態來描述線程池當前的運行狀態;
線程池的任務隊列如果有邊界,那么就需要有一個任務拒絕策略來處理過多的任務,同時在線程池的銷毀階段也需要有一個任務拒絕策略來處理新加入的任務;
上面種 閱讀全文