我的'测试引擎'将进行n次测试,每次测试都进行k次测试。存储每个测试结果以供以后使用。
所以我有n * k个进程可以同时运行。
我正在尝试有效地使用java并发工具。
现在我在测试级别有一个执行者服务,在子测试级别有一个执行者服务。
我为测试级别创建了Callables列表。 然后,每个可调用的测试将为子测试级别创建另一个可调用的列表。 当调用test callable随后将调用所有subtest callables
通话顺序:
我无法共享执行程序服务,因为我需要在执行程序上调用'shutdown'。
我解决此问题的想法是为每个执行程序服务提供相同的固定大小的线程池。
你认为这是一个好的设计吗? 我是否会错过更合适/更简单的事情?
答案 0 :(得分:4)
使用单个固定线程池执行程序。避免调用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();
}
}