MulaiMulai sekarang secara gratis

Menerapkan pipeline pemrosesan data asinkron

Anda sedang membangun sebuah dasbor analitik yang perlu mengambil data pengguna dan log aktivitas dari layanan terpisah, lalu memprosesnya untuk membuat ringkasan pengguna. Operasi ini harus dijalankan secara asinkron agar aplikasi tetap responsif. Tugas Anda adalah mengimplementasikannya menggunakan CompletableFuture.

Kelas UserData dan UserSummary telah dimuat sebelumnya untuk Anda.

Latihan ini adalah bagian dari kursus

Optimasi Kode di Java

Lihat Kursus

Petunjuk latihan

  • Tambahkan pengambilan data pengguna dalam CompletableFuture.
  • Tambahkan pemrosesan data pengguna dalam CompletableFuture.
  • Tambahkan penanganan pengecualian dalam CompletableFuture.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

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) {}
    }
}
Edit dan Jalankan Kode