Sobes.tech
Middle

Javaда Future классы эмне үчүн колдонулат?

sobes.tech AI

AIден жооп

Future классы асинхрондук операциянын жыйынтыгын көрсөтөт. Ал анын эсептелгенден кийин маанисин алуу, операциянын аяктаганын текшерүү, күтүп алуу же жокко чыгаруу мүмкүнчүлүгүн берет. Бул көптөгөн агымдуу колдонмолордо блоктогон эмес операциялар үчүн негизги элемент.

Негизги ыкмалары:

  • get(): Операциянын аяктоосун күтүп, жыйынтыгын кайтарат. Блоктогон чакыруу.
  • get(long timeout, TimeUnit unit): Тайм-аут менен операциянын аяктоосун күтөт. TimeoutException чыгара алат.
  • isDone(): Эгер операция аяктагандан кийин true кайтарат ( ийгиликтүү, ката менен же жокко чыгарылган).
  • isCancelled(): Эгер операция жокко чыгарылган болсо true кайтарат.
  • cancel(boolean mayInterruptIfRunning): Ишти жокко чыгарууга аракет кылат.

Колдонуу мисалы:

import java.util.concurrent.*;

// Асинхрондук тапшырманын мисалы
class MyCallable implements Callable<String> {
    @Override
    public String call() throws Exception {
        Thread.sleep(1000); // Иштин имитациясы
        return "есептөө жыйынтыгы";
    }
}

public class FutureExample {
    public static void main(String[] args) throws Exception {
        ExecutorService executor = Executors.newSingleThreadExecutor();

        // Асинхрондук тапшырманы ишке киргизүү
        Future<String> future = executor.submit(new MyCallable());

        System.out.println("Тапшырма ишке киргизилди. Күтөбүз...");

        // Статусту блоктогон эмес жол менен текшерүү
        while (!future.isDone()) {
            System.out.println("Тапшырма дагы иштеп жатат...");
            Thread.sleep(100);
        }

        // Натыйжаны алуу (блоктогон чакыруу)
        String result = future.get();
        System.out.println("Натыйжа алынды: " + result);

        // Executorду жабуу
        executor.shutdown();
    }
}

Future көбүнесе ExecutorService менен колдонулат, жиптердин пулун башкаруу жана асинхрондук тапшырмаларды аткаруу үчүн. Ал параллелдүү эсептөөлөрдүн натыйжалары менен өз ара аракеттенүүнүн ыңгайлуу жолун камсыздайт.