实现异步数据处理流水线
您正在构建一个分析仪表板,需要分别从不同服务获取用户数据和活动日志,然后对其进行处理以生成用户概要。为保持应用的响应性,该操作应以异步方式执行。您的任务是使用 CompletableFuture 来实现这一点。
UserData 和 UserSummary 类已为您预加载。
本练习是课程的一部分
Java 代码优化
练习说明
- 在
CompletableFuture中添加获取用户数据的步骤。 - 在
CompletableFuture中添加处理用户数据的步骤。 - 在
CompletableFuture中添加异常处理。
交互式实操练习
通过完成这段示例代码来试试这个练习。
public class AsyncDashboard {
public static void main(String[] args) throws Exception {
CompletableFuture userSummaryFuture = CompletableFuture
// Fetch the user data
.____(() -> fetchUserData("user123"))
// Create summary based on fetched data
.____(userData -> createSummary(userData))
// Add exception handling
.____(ex -> new UserSummary(new UserData("error", "Error User")));
Thread.sleep(5000);
}
private static UserData fetchUserData(String userId) {
simulateNetworkLatency(300);
return new UserData(userId, "John Doe");
}
private static UserSummary createSummary(UserData userData) {
simulateNetworkLatency(200);
return new UserSummary(userData);
}
private static void simulateNetworkLatency(int millis) {
try { Thread.sleep(millis); } catch (InterruptedException e) {}
}
}