Middle
Mire szolgál a Future osztály Java-ban?
sobes.tech MI
Válasz az MI-től
A Future osztály egy aszinkron művelet eredményét képviseli. Lehetővé teszi az érték megszerzését a számítás után, ellenőrizni, hogy a művelet befejeződött-e, várni a befejezésére vagy megszakítani azt. Ez kulcsfontosságú az olyan nem blokkoló műveletekhez több szálas alkalmazásokban.
Főbb módszerek:
get(): Várja a művelet befejezését és visszaadja az eredményt. Blokkoló hívás.get(long timeout, TimeUnit unit): Időkorláttal várja a művelet befejezését.TimeoutException-t dobhat.isDone():true-t ad vissza, ha a művelet befejeződött (sikeresen, hibával vagy törölve).isCancelled():true-t ad vissza, ha a műveletet törölték.cancel(boolean mayInterruptIfRunning): Megpróbálja megszakítani a feladatot.
Használati példa:
import java.util.concurrent.*;
// Aszinkron feladat példa
class MyCallable implements Callable<String> {
@Override
public String call() throws Exception {
Thread.sleep(1000); // Munka szimuláció
return "Számítás eredménye";
}
}
public class FutureExample {
public static void main(String[] args) throws Exception {
ExecutorService executor = Executors.newSingleThreadExecutor();
// Aszinkron feladat indítása
Future<String> future = executor.submit(new MyCallable());
System.out.println("Feladat elindult. Várok...");
// Állapot ellenőrzése nem blokkoló módon
while (!future.isDone()) {
System.out.println("A feladat még fut...");
Thread.sleep(100);
}
// Eredmény lekérése (blokkoló hívás)
String result = future.get();
System.out.println("Eredmény: " + result);
// Executor leállítása
executor.shutdown();
}
}