Sobes.tech
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īt TimeoutException.
  • 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.