java 多线程异步处理List拿到返回结果

public static void test10() throws ExecutionException, InterruptedException {
    List<TestUser> userList=new ArrayList<>();
    for(int i=0;i<1000;i++){
        TestUser testUser=new TestUser();
        testUser.setUsername("a"+i);
        testUser.setAge(1);
        userList.add(testUser);
    }
    List<Future> futureList=new ArrayList<>();
    for(TestUser testUser:userList){
        Future<TestUser> future=ThreadUtil.execAsync(new Callable<TestUser> (){
            @Override
            public TestUser call() throws Exception {
                Thread.sleep(1000);
                testUser.setAge(testUser.getAge()+1);
                return testUser;
            }
        });
        futureList.add(future);
    }
    List<TestUser> testUserList=new ArrayList<>();
    for(Future<TestUser> future:futureList){
        TestUser testUser=future.get();
        testUserList.add(testUser);
    }
    for(TestUser testUser:testUserList){
        System.out.println(testUser.toString());
    }
}

@Data
public class TestUser {
    private String username;
    private Integer age;
}