Middle
Na čo sa používa trieda Future v Jave?
sobes.tech AI
Odpoveď od AI
Trieda Future predstavuje výsledok asynchrónnej operácie. Umožňuje získať hodnotu po jej výpočte, skontrolovať, či operácia bola dokončená, počkať na jej dokončenie alebo ju zrušiť. Je kľúčovým prvkom pre neblokujúce operácie v viacvláknových aplikáciách.
Hlavné metódy:
get(): Čaká na dokončenie operácie a vráti výsledok. Blokujúci volanie.get(long timeout, TimeUnit unit): Čaká s časovým limitom na dokončenie operácie. Môže vyvolaťTimeoutException.isDone(): Vrátitrue, ak bola operácia dokončená (úspešne, s chybou alebo zrušená).isCancelled(): Vrátitrue, ak bola operácia zrušená.cancel(boolean mayInterruptIfRunning): Pokúsi sa zrušiť úlohu.
Príklad použitia:
import java.util.concurrent.*;
// Príklad asynchrónnej úlohy
class MyCallable implements Callable<String> {
@Override
public String call() throws Exception {
Thread.sleep(1000); // Simulácia práce
return "Výsledok výpočtu";
}
}
public class FutureExample {
public static void main(String[] args) throws Exception {
ExecutorService executor = Executors.newSingleThreadExecutor();
// Spustenie asynchrónnej úlohy
Future<String> future = executor.submit(new MyCallable());
System.out.println("Úloha spustená. Čakám...");
// Kontrola stavu neblokujúcim spôsobom
while (!future.isDone()) {
System.out.println("Úloha stále beží...");
Thread.sleep(100);
}
// Získanie výsledku (blokujúci volanie)
String result = future.get();
System.out.println("Výsledok: " + result);
// Ukončenie executor-u
executor.shutdown();
}
}