我试图弄清楚在java中并行调用任务'x'次的最简单方法。该任务有一个字符串变量,其值应该对每次调用都是唯一的,并返回一个字符串和int结果。
我一直在寻找互联网上的资源,现在我非常困惑。
答案 0 :(得分: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();
...
}