import java.util.concurrent.CompletableFuture;
class User {
private Long id;
// 其他用户信息字段
public User(Long id) {
this.id = id;
}
public Long getId() {
return id;
}
}
class Permission {
private Long userId;
// 其他权限信息字段
public Permission(Long userId) {
this.userId = userId;
}
public Long getUserId() {
return userId;
}
}
class UserWithPermission {
private User user;
private Permission permission;
public UserWithPermission(User user, Permission permission) {
this.user = user;
this.permission = permission;
}
@Override
public String toString() {
return "UserWithPermission{" +
"user=" + user +
", permission=" + permission +
'}';
}
}
public class AsyncTaskExample {
public CompletableFuture<UserWithPermission> combineTasks() {
CompletableFuture<User> taskA = CompletableFuture.supplyAsync(() -> {
// 模拟从数据库查询用户信息
return new User(1L);
});
CompletableFuture<Permission> taskB = CompletableFuture.supplyAsync(() -> {
// 模拟根据用户ID从另一个数据源查询权限信息
return new Permission(1L);
});
return taskA.thenCombine(taskB, (user, permission) -> new UserWithPermission(user, permission))
.exceptionally(ex -> {
System.out.println("任务出现异常: " + ex.getMessage());
return null;
});
}
public static void main(String[] args) {
AsyncTaskExample example = new AsyncTaskExample();
CompletableFuture<UserWithPermission> result = example.combineTasks();
result.thenAccept(System.out::println).join();
}
}