Mulai sekarangMulai 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 merupakan bagian dari kursus

Optimasi Kode di Java

Lihat Kursus

Instruksi latihan

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

Latihan interaktif langsung praktik

Cobalah latihan ini dengan melengkapi kode contoh ini.

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