始める無料で始める

非同期データ処理パイプラインの実装

別々のサービスからユーザーデータとアクティビティログを取得し、それらを処理してユーザーサマリーを作成する分析ダッシュボードを構築しています。この処理は、アプリケーションの応答性を保つために非同期で実行する必要があります。これを 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) {}
    }
}
コードを編集して実行