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 менен колдонулат, жиптердин пулун башкаруу жана асинхрондук тапшырмаларды аткаруу үчүн. Ал параллелдүү эсептөөлөрдүн натыйжалары менен өз ара аракеттенүүнүн ыңгайлуу жолун камсыздайт.