每次運行程序/應用程序時創建多個執行程序服務是否是一個好主意?你爲什麼要這樣做,而不是在開始時只開始executors.newcachedthreadpool()
並提交所有的可調參數。何時爲每個應用程序創建多個執行程序服務java
2
A
回答
1
一個典型的用例添加的執行服務,就是當你希望你的服務使用不同的線程池的策略,或有兩個不同的池大小。您的應用程序可能包含您想要提交給大型固定大小的池的一類runnables,以及另一種需要較小池的runnables。
記住的ExecutorService有幾種實現方式:
看一看爲ThreadPoolExecutor的構造函數的參數,這些都可能要調整所有的事情,基於那種任務的要提交:
ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue)
請注意,您也可以傳入隊列,以便您可以控制線程池使用的排隊策略。
2
- 您可能需要不同的口味(比如一個固定的線程池或計劃的執行人)
- 封裝:如果特定類需要通過執行來運行的東西,這是有道理的,這個類負責決定其執行政策,這是一個實現細節
- 專精 - 前一個點的推論:
- 一些任務需要多線程(通常是網絡任務)
- 而另一些只需要幾個(CPU綁定的任務)
- 和一些應該只使用一個(如果您例如您的本地硬盤驅動器上的讀/寫)
- 當然有,你想,因爲你要調用代碼到執行傳遞給對象的情況下控制如何執行一些任務
底線,我想不出爲什麼,對於一個足夠大的項目,你只想爲整個程序使用一個線程池。
相關問題
- 1. 建議:爲web應用程序執行Java服務器
- 2. 爲Java應用程序創建安裝程序作爲Windows服務運行
- 3. 爲多個應用程序創建一個安裝程序
- 4. 如何創建多個python應用程序服務器實例?
- 5. 創建多線程Java服務器聊天應用程序。
- 6. 如何爲Excel宏程序創建可執行應用程序?
- 7. 如何創建多個線程池(即多個執行程序,每個線程池都有一個線程)
- 8. 爲同一個應用程序運行多個rails服務器
- 9. 我應該爲每個應用程序創建一個factories.py嗎?
- 10. 每次執行Python程序時創建一個新目錄
- 11. GWT RPC - 每個應用程序的多個RPC服務
- 12. 應用程序服務器如何運行多個應用程序?
- 13. 多個應用程序已執行Bluemix
- 14. 爲android應用程序創建一個web服務
- 15. 爲我的MVC應用程序創建一個服務層?
- 16. 創建一個每天運行一次的c#應用程序/ windows服務
- 17. 執行程序服務 - 線程超時
- 18. 多個應用程序服務器的單個Java緩存
- 19. java客戶端服務器應用程序 - 無法創建多個客戶端
- 20. 爲企業Java和C++創建Web服務應用程序?
- 21. 爲應用程序的每個頁面創建一個菜單
- 22. liquibase:執行變更每個I運行應用程序時
- 23. 應該爲每個應用程序執行FIPS自檢嗎?
- 24. Java:在服務器應用程序中創建線程池
- 25. 創建服務(惡魔)應用程序
- 26. 爲一個應用程序添加多個服務引用
- 27. 如何爲每個Web應用程序的用戶在我的Java EE/jboss Web應用程序上創建bean?
- 28. 構建多種風格的Android應用程序創建多個應用程序
- 29. 如何在java應用程序中執行selfhosting web服務
- 30. 在Java程序中執行另一個Java程序時