java.util.concurrent 包裏有一個Executor 框架java
- 基於接口的任務執行工具
- 只須要一行代碼
- 提交一個runnable 方法
- 優雅的終止(必須作到,否則虛擬機可能不會退出)
對於負載不重的服務服務器
- Executors.newCachedThreadPool 就能知足
- 不太適合大負載
- 由於被提交的任務沒有排隊,而是直接交給線程執行,沒有空閒就會new 新的線程
大負載服務器框架
- Executors.newFixedThreadPool
- 包含固定數量線程
- 最大限度的控制,直接使用ThreadPoolExecutor
請儘可能不要使用本身的工做隊列、也儘可能不要直接使用線程工具
- Thread 是執行機制、又是工做單元(任務:task)
- 如今兩者分開,task由Runnable、Callable來充當
本質上講,executor 框架所作的工做是執行,就像Collection 框架作的是 彙集線程