Sobes.tech
Middle

Java-da Future sinfi nə üçün istifadə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

Future sinfi asinxron əməliyyatın nəticəsini təmsil edir. O, hesablamadan sonra dəyəri əldə etməyə, əməliyyatın tamamlanıb-tamamlanmadığını yoxlamağa, onun tamamlanmasını gözləməyə və ya ləğv etməyə imkan verir. Bu, çox ipli tətbiqlərdə bloklamayan əməliyyatlar üçün əsas elementdir.

Əsas metodlar:

  • get(): Əməliyyatın tamamlanmasını gözləyir və nəticəni qaytarır. Bloklayıcı çağırış.
  • get(long timeout, TimeUnit unit): Vaxt limiti ilə əməliyyatın tamamlanmasını gözləyir. TimeoutException ata bilər.
  • isDone(): Əməliyyatın tamamlandığını true və ya false kimi qaytarır.
  • isCancelled(): Əməliyyatın ləğv olunduğunu true və ya false kimi qaytarır.
  • cancel(boolean mayInterruptIfRunning): Tapşırığı ləğv etməyə çalışır.

İstifadə nümunəsi:

import java.util.concurrent.*;

// Asinxron tapşırıq nümunəsi
class MyCallable implements Callable<String> {
    @Override
    public String call() throws Exception {
        Thread.sleep(1000); // İşin simulasyonu
        return "Hesablama nəticəsi";
    }
}

public class FutureExample {
    public static void main(String[] args) throws Exception {
        ExecutorService executor = Executors.newSingleThreadExecutor();

        // Asinxron tapşırığı başlat
        Future<String> future = executor.submit(new MyCallable());

        System.out.println("Tapşırıq başladı. Gözləyirəm...");

        // Statusu bloklamadan yoxlamaq
        while (!future.isDone()) {
            System.out.println("Tapşırıq hələ də davam edir...");
            Thread.sleep(100);
        }

        // Nəticəni əldə et (bloklayıcı çağırış)
        String result = future.get();
        System.out.println("Nəticə alındı: " + result);

        // Executor-u bağla
        executor.shutdown();
    }
}