我试图找出最简单的方法来调用任务'x'次并且在java中并行。该任务有一个字符串变量,其值对于每次调用都应该是唯一的,并且它返回一个字符串和 int 结果。
我一直在互联网上查找资源,现在我非常困惑。
我试图找出最简单的方法来调用任务'x'次并且在java中并行。该任务有一个字符串变量,其值对于每次调用都应该是唯一的,并且它返回一个字符串和 int 结果。
我一直在互联网上查找资源,现在我非常困惑。
为了并行执行任务,您的首选应该是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();
...
}