1. 程式人生 > >executor 和task 優先於執行緒(68)

executor 和task 優先於執行緒(68)

java.util.concurrent 包裡有一個Executor 框架

  • 基於介面的任務執行工具
  • 只需要一行程式碼
  • 提交一個runnable 方法
  • 優雅的終止(必須做到,不然虛擬機器可能不會退出)

對於負載不重的服務

  • Executors.newCachedThreadPool 就能滿足
    • 不太適合大負載
    • 因為被提交的任務沒有排隊,而是直接交給執行緒執行,沒有空閒就會new 新的執行緒

大負載伺服器

  • Executors.newFixedThreadPool
    • 包含固定數量執行緒
    • 最大限度的控制,直接使用ThreadPoolExecutor

請儘量不要使用自己的工作佇列、也儘量不要直接使用執行緒

  • Thread 是執行機制、又是工作單元(任務:task)
  • 現在二者分開,task由Runnable、Callable來充當
    • 執行機制executor service

本質上講,executor 框架所做的工作是執行,就像Collection 框架做的是 聚集