编程语言
首页 > 编程语言> > java – 来自ExecutorService的CompletableFuture

java – 来自ExecutorService的CompletableFuture

作者:互联网

我创建了一个自定义ExecutorService

ExecutorService executor =
        new ThreadPoolExecutor(0, maxPoolSize, keepAliveTime, timeUnit, new LinkedBlockingDeque<>());

我提交我的任务

Future<String> result = executor.submit(() -> "test");

如你所见,执行者返回一个微薄的未来;我宁愿拥有一个CompletableFuture,我可以与其他CompletableFutures链接.

Guava,我们有ListeningExecutorService返回ListenableFutures.对于我的意图和目的,那些ListenableFutures和CompletableFutures一样好.

尽管如此,我还是希望尽可能多地使用Java的标准库,这意味着我正在寻找一种从我的自定义执行器获取CompletableFutures的方法.

解决方法:

事后看来很明显:不要尝试从执行程序获取CompletableFuture,而是将执行程序传递给CompletableFuture.

像这样:

CompletableFuture<String> futureOutput =
        CompletableFuture.supplyAsync(() -> "test", executor);

该任务将使用执行程序提供的其中一个线程执行,客户端具有CompletableFuture的所有便利,以获取任务的结果.

标签:completable-future,java,executorservice
来源: https://codeday.me/bug/20190828/1749316.html