gpt4 book ai didi

java - 使用 CompletableFuture 或 Future 对象获取 Callable 值

转载 作者:行者123 更新时间:2023-12-01 17:47:04 24 4
gpt4 key购买 nike

Future.get() 方法是一个阻塞方法,我只是希望我的 main 方法不打扰 f.get() 并继续执行。

如何从 Future 或 CompletableFuture 获取可调用的返回值,而不影响主线程执行,并且不使用任何循环来不断使用 isDone() 检查

        FutureTask<String> result = (FutureTask<String>) es.submit(new Helloo());
// CompletableFuture<String> r = CompletableFuture.supplyAsync(()a -> new Hello(), es);
Future<String> r = es.submit(new Hello());
es.execute(()->{System.out.println("hello");});
System.out.println("Main");

System.out.println("Main");
System.out.println("Main");
System.out.println("Main");
System.out.println(r.get());

System.out.println("Main");
System.out.println("Main");```

最佳答案

如果您想提供(计算/生成/检索/等)某个值,然后对该值进行异步操作,您可以通过诸如 CompletableFuture.supplyAsync 之类的方法创建一个 CompletableFuture 。这将返回一个 CompletableFuture 的实例。

使用该实例,您可以调用方法thenAccept,该方法将调用给定的Consumer方法,并使用上一步提供的值作为参数。

所以有点像这样:

CompletableFuture.supplyAsync(aMethodThatWillReturnAString, yourExecutor).thenAccept((string theString) -> {
System.out.println(theString);
});

关于java - 使用 CompletableFuture 或 Future 对象获取 Callable 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60850133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com