gpt4 book ai didi

java - 异步执行多个java方法并获取完成工作的结果

转载 作者:行者123 更新时间:2023-12-02 01:36:40 29 4
gpt4 key购买 nike

如何异步执行多个java方法并获取每个方法的工作结果?可以说我有这个:

for(int i=1; i<=10000; i++) {
kur(i);
}

//on kur(i) finish -> System.out.println(kur(i)) or System.out.println(Exception e)


Info kur(int i) throws Exception {
//do some stuff
return new Info(...);
}

我也可以使用 Spring Boot。我查了一下:https://spring.io/guides/gs/async-method/但这与我的情况不同。

你能帮我吗?

最佳答案

(原始答案)也许是 ExecutorService可以帮助你吗?

ExecutorService executorService = Executors.newFixedThreadPool(10);

IntStream.rangeClosed(1, 10000)
.forEach(i -> {
executorService.submit(() -> {
try {
System.out.println(kur(i));
} catch (Exception e) {
// do something useful here - remember you're in a separate thread
//
// this is not useful.
e.printStackTrace();
}
});
});

executorService.shutdown();
executorService.awaitTermination(1, TimeUnit.MINUTES);

(使用穷人的解决方案进行编辑,等待一切完成):

    ExecutorService executorService = Executors.newFixedThreadPool(10);

List<Future<?>> futures = IntStream.rangeClosed(1, 10000)
.mapToObj(i -> {
return executorService.submit(() -> {
try {
System.out.println(kur(i));
} catch (Exception e) {
// do something useful here - remember you're in a separate thread
//
// this is not useful.
e.printStackTrace();
}
});
})
.collect(Collectors.toList());

for (Future<?> f : futures) {
f.get();
}

executorService.shutdown();
executorService.awaitTermination(1, TimeUnit.MINUTES);

关于java - 异步执行多个java方法并获取完成工作的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55152184/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com