2

我试图找出最简单的方法来调用任务'x'次并且在java中并行。该任务有一个字符串变量,其值对于每次调用都应该是唯一的,并且它返回一个字符串和 int 结果。

我一直在互联网上查找资源,现在我非常困惑。

4

1 回答 1

1

为了并行执行任务,您的首选应该是ExecutorService。你会得到一个他们在文档中说的实例,即

ExecutorService service = Executors.newFixedThreadPool(poolSize);

如果你的任务必须返回一个值,你应该使用

Future<T> submit(Callable<T> task);

功能。让你的任务实现Callable接口,返回你需要的结果。Future将您的任务提交给服务,然后通过对象等待结果。粗略的草图:

public class MyTask implements Callable<StringInt> {
    public MyTask(String inputParameter) { ... }
    public StringInt call() { ... }
}

...

List<Future<StringInt>> results = new ArrayList<Future<StringInt>>();
ExecutorService service = Executors.newFixedThreadPool(16);
for (String inputParameter : inputParameters) {
    // Create tasks and start parallel execution
    results.add(service.submit(new MyTask(inputParameter)));
}

for (Future<StringInt> result : results) {
    // Wait for tasks to end, and get result
    StringInt resultValue = result.get();
    ...
}
于 2013-10-18T09:35:26.923 回答