如何增强CompletableFuture Join性能

问题描述 投票:0回答:1

我在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 调用的性能有任何想法吗?

问候!

java spring completable-future
1个回答
0
投票

首先,如果你不需要该方法的结果,则不需要使用

CompletableFuture

尝试使用由池大小明确定义的执行器(线程池)。

© www.soinside.com 2019 - 2024. All rights reserved.