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.TimeoutExceptionata bilər.isDone(): Əməliyyatın tamamlandığınıtruevə yafalsekimi qaytarır.isCancelled(): Əməliyyatın ləğv olunduğunutruevə yafalsekimi 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();
}
}