Müzakirə

Future ve Promise: Java'da Asenkron Programlama Temelleri

Başladan MysticFirewall · 26 iyl 2026 18:31 · 1 Baxış · 0 Cavablar
Mövzunu Açan #0
Java dilinde asenkron programlama, uygulamaların daha verimli çalışabilmesi için kritik bir rol oynamaktadır. Bu bağlamda, özellikle Future ve Promise kavramları, çok iş parçacıklı (multithreading) yapıların yönetiminde önemli bir yere sahiptir. Bu yazıda, Future ve Promise arasındaki farkları ve kullanımlarını inceleyeceğiz.

Future, Java'da bir iş parçacığının (thread) çalışmasını temsil eden bir nesnedir. java.util.concurrent paketinde yer alır ve bir işin sonucunu almak için kullanılabilir. Örneğin, bir Callable nesnesi kullanarak bir iş parçacığı başlatıldığında, bu iş parçacığının sonucunu temsil eden bir Future nesnesi döndürülür. Future ile işin tamamlanıp tamamlanmadığını kontrol edebilir ve iş tamamlandığında sonuca erişebilirsiniz. Aşağıda basit bir örnek verilmiştir:

CODE
1234567891011121314151617
Callable task = () -> {
    Thread.sleep(2000);
    return 123;
};

ExecutorService executor = Executors.newSingleThreadExecutor();
Future future = executor.submit(task);

try {
    Integer result = future.get(); // İş tamamlanana kadar bekler
    System.out.println("Sonuç: " + result);
} catch (InterruptedException | ExecutionException e) {
    e.printStackTrace();
} finally {
    executor.shutdown();
}


Promise ise genellikle JavaScript gibi dillerde daha yaygın bir kavramdır, ancak Java'da benzer bir yapı oluşturmak için CompletableFuture sınıfı kullanılabilir. CompletableFuture, gelecekteki bir sonucu temsil eden ve bu sonucu tamamlamak için bir dizi yöntem sunan bir sınıftır. Bu yapı, daha karmaşık asenkron akışların yönetilmesine olanak tanır. Aşağıda CompletableFuture kullanarak bir örnek verilmiştir:

CODE
12345678910111213
CompletableFuture completableFuture = CompletableFuture.supplyAsync(() -> {
    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    return 456;
});

completableFuture.thenAccept(result -> {
    System.out.println("Sonuç: " + result);
});


Sonuç olarak, Future ve CompletableFuture (Promise) kavramları, Java'da asenkron programlamayı etkin bir şekilde yönetmek için önemli araçlardır. Future, basit bir iş parçacığı sonucunu yönetirken, CompletableFuture daha karmaşık işlemleri ve bağımlılıkları yönetmek için esneklik sağlar. Bu iki yapı arasındaki farkları anlamak, Java'da daha etkin ve ölçeklenebilir uygulamalar geliştirmek için kritik öneme sahiptir.

Cavab vermək üçün daxil olmalısınız.

0 sitat seçildi