logo

Java'da Çağrılabilir ve Gelecek

Java'da çoklu iş parçacığı, görevlerin eşzamanlı olarak yürütülmesine olanak tanır ve performansı ve yanıt verme hızını artırır. Geleneksel olarak geliştiriciler, görevleri tanımlamak için Runnable arayüzünü kullanırdı ancak bunun iki önemli sınırlaması vardır: bir sonuç döndüremez ve kontrol edilen istisnaları atamaz. Bunların üstesinden gelmek için Java, Java 5'te Callable ve Future arayüzlerini tanıttı.

Çağrılabilir Arayüz

Çağrılabilir arayüz sonuç döndüren ve bir istisna oluşturabilecek bir görevi temsil eder. Runnable'a benzer ancak bir değer döndürebildiği ve kontrol edilen istisnaları atabildiği için daha esnektir.

Java
import java.util.concurrent.*; public class CallableExample {  public static void main(String[] args) throws Exception {  ExecutorService executor = Executors.newSingleThreadExecutor();  Callable<Integer> task = () -> {  int sum = 0;  for (int i = 1; i <= 5; i++) sum += i;  return sum; // returns result  };  Future<Integer> future = executor.submit(task);  System.out.println('Result: ' + future.get());   executor.shutdown();  } } 

Çıkış
Result: 15 

Açıklama: Yürütücüye çağrılabilir bir görev gönderilir. 1'den 5'e kadar sayıların toplamını hesaplar ve sonucu döndürür. Sonuç, görev tamamlandıktan sonra Future.get() kullanılarak alınır.



Geleceğin Arayüzü

Gelecek arayüz eşzamansız bir hesaplamanın sonucunu temsil eder. Bir Callable veya Runnable görevini ExecutorService'e gönderdiğinizde, bir Future nesnesi döndürür.

Java
import java.util.concurrent.*; public class CallableFutureExample {  public static void main(String[] args) {  ExecutorService executor = Executors.newSingleThreadExecutor();  Future<Integer> future = executor.submit(() -> 10 + 20);  try {  Integer result = future.get(); // waits but returns instantly  System.out.println('Result: ' + result);  } catch (Exception e) {  e.printStackTrace();  } finally {  executor.shutdown();  }  } } 

Çıkış
Result: 30 

Açıklama: Callablegörev hesaplamaları10 + 2 and ExecutorService.submit()yöntem bir döndürürFuturenesne. Kullanmafuture.get()Hesaplama tamamlandığında sonucu alırız.

Çağrılabilir ve Gelecek

ÖzellikAranabilirGelecek
Amaç Sonuç döndüren bir görevi temsil ederEşzamansız bir görevin sonucunu temsil eder
İade Türü Yürütüldüğünde bir sonuç döndürürBir Çağrılabilir tarafından döndürülen sonucu tutar
Tanımlandığı Yer java.util.concurrent paketijava.util.concurrent paketi
Uygulamak ExecutorService'e gönderildiExecutorService.submit() tarafından döndürüldü
Yöntemler Bir yöntem çağrısı var()get() isDone() cancel() gibi yöntemlere sahiptir
İstisna İşleme İşaretli istisnaları atabilirYürütmeden sonra sonuçları ve istisnaları yönetir
Kullanım Neyin yürütüleceğini tanımlarKontrol eder, izler ve bir görevin sonucunu alır
Test Oluştur