Middle
Kam paredzēta klase Future Java?
sobes.tech AI
Atbilde no AI
Future klase pārstāv asinhronās operācijas rezultātu. Tā ļauj iegūt vērtību pēc tās aprēķināšanas, pārbaudīt, vai operācija ir pabeigta, gaidīt tās pabeigšanu vai to atcelt. Tas ir svarīgs elements daudzšūnu programmās neblokējošām operācijām.
Galvenās metodes:
get(): Gaidīt operācijas pabeigšanu un atgriezt rezultātu. Bloķējoša izsaukšana.get(long timeout, TimeUnit unit): Gaidīt operācijas pabeigšanu ar laika ierobežojumu. Var izraisītTimeoutException.isDone(): Atgriežtrue, ja operācija ir pabeigta (veiksmīgi, ar kļūdu vai atcelta).isCancelled(): Atgriežtrue, ja operācija ir atcelta.cancel(boolean mayInterruptIfRunning): Mēģināt atcelt uzdevumu.
Piemērs lietošanai:
import java.util.concurrent.*;
// Asinhronas uzdevuma piemērs
class MyCallable implements Callable<String> {
@Override
public String call() throws Exception {
Thread.sleep(1000); // Darba imitācija
return "Aprēķina rezultāts";
}
}
public class FutureExample {
public static void main(String[] args) throws Exception {
ExecutorService executor = Executors.newSingleThreadExecutor();
// Sākt asinhrono uzdevumu
Future<String> future = executor.submit(new MyCallable());
System.out.println("Uzdevums uzsākts. Gaidām...");
// Pārbaudīt statusu neblokējošā veidā
while (!future.isDone()) {
System.out.println("Uzdevums vēl turpinās...");
Thread.sleep(100);
}
// Saņemt rezultātu (blokējoša izsaukšana)
String result = future.get();
System.out.println("Saņemtais rezultāts: " + result);
// Aizvērt izpildītāju
executor.shutdown();
}
}
Future bieži tiek izmantots kopā ar ExecutorService, lai pārvaldītu pavedienu baseinu un veiktu asinhronas uzdevumus. Tas nodrošina ērtu veidu, kā sadarboties ar paralēlo aprēķinu rezultātiem.