我在java项目中工作,我使用ResTemplate调用rest api,我使用CompletableFuture进行并行调用,这是我的代码:
List<CompletableFuture<Object>> allUsersFuturesCalls = new ArrayList<>();
// User list contains 300 user
for (User user : listOfUsers) {
// 1 Mapping Excel to Model
User userToCreate = userService.MapUser(user);
// Add create user service to the list
// userService.createUser calls restTemplate POST
allUsersFuturesCalls.add(userService.createUser(userToCreate));
}
// Trigger Calls
CompletableFuture.allOf(allUsersFuturesCalls.toArray(new CompletableFuture[0])).join();
当
listOfUsers
包含 300
元素时,此代码工作正常,需要 1 分钟,但是当我与另一个包含 listOfUsers
用户的 4000
一起工作时,执行时间会增加,并且需要超过 15 分钟才能触发拨打 4k 电话。
您对如何提高我的 CompletableFuture 调用的性能有任何想法吗?
问候!
首先,如果你不需要该方法的结果,则不需要使用
CompletableFuture
。
尝试使用由池大小明确定义的执行器(线程池)。