[英]Java: design for using many executors services and only few threads
我的“測試引擎”將執行n個測試,每個測試執行k個子測試。 存儲每個測試結果以供以后使用。
因此,我有可以同時運行的n * k個進程。
我試圖弄清楚如何有效地使用Java並發工具。
現在,我在測試級別有一個執行程序服務,在子測試級別有n個執行程序服務。
我為測試級別創建了可調用對象列表。 然后,每個可調用的測試將為子測試級別創建另一個可調用的列表。 當調用測試可調用對象時,它將隨后調用所有子測試可調用對象
通話順序:
我無法共享執行器服務,因為我需要在執行器上調用“關機”。
解決此問題的想法是為每個執行程序服務提供相同的固定大小的線程池。
您認為這是一個好的設計嗎? 我會錯過一些更合適/更簡單的方法嗎?
使用單個固定線程池執行程序。 避免調用shutdown,否則可能會出錯。
這是一些偽代碼,我可以根據所發布的少量信息對您的需求進行最佳猜測。
main () {
ArrayList<Future<?>> futures = new ArrayList<Future<?>>();
ExecutorService exec = Executors.newFixedThreadPool(Runtime.getNumProcessors())
futures.add(exec.submit(Test1));
...
futures.add(exec.submit(Testn));
for (Future<?> future:futures) {
? result = future.get();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.