开始使用免费开始使用

实现异步数据处理流水线

您正在构建一个分析仪表板,需要分别从不同服务获取用户数据和活动日志,然后对其进行处理以生成用户概要。为保持应用的响应性,该操作应以异步方式执行。您的任务是使用 CompletableFuture 来实现这一点。

UserDataUserSummary 类已为您预加载。

本练习是课程的一部分

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) {}
    }
}
编辑并运行代码