2012-09-16 94 views

回答

1

一個典型的用例添加的執行服務,就是當你希望你的服務使用不同的線程池的策略,或有兩個不同的池大小。您的應用程序可能包含您想要提交給大型固定大小的池的一類runnables,以及另一種需要較小池的runnables。

記住的ExecutorService有幾種實現方式:

  1. ThreadPoolExecutor
  2. ScheduledThreadPoolExecutor

看一看爲ThreadPoolExecutor的構造函數的參數,這些都可能要調整所有的事情,基於那種任務的要提交:

ThreadPoolExecutor(int corePoolSize, 
    int maximumPoolSize, 
    long keepAliveTime, 
    TimeUnit unit, 
    BlockingQueue<Runnable> workQueue) 

請注意,您也可以傳入隊列,以便您可以控制線程池使用的排隊策略。

2
  • 您可能需要不同的口味(比如一個固定的線程池或計劃的執行人)
  • 封裝:如果特定類需要通過執行來運行的東西,這是有道理的,這個類負責決定其執行政策,這是一個實現細節
  • 專精 - 前一個點的推論:
    • 一些任務需要多線程(通常是網絡任務)
    • 而另一些只需要幾個(CPU綁定的任務)
    • 和一些應該只使用一個(如果您例如您的本地硬盤驅動器上的讀/寫)
  • 當然有,你想,因爲你要調用代碼到執行傳遞給對象的情況下控制如何執行一些任務

底線,我想不出爲什麼,對於一個足夠大的項目,你只想爲整個程序使用一個線程池。

相關問題