来自ExecutorService的CompletableFuture

Mat*_*aun 6 java executorservice completable-future

我创建了一个自定义 ExecutorService

ExecutorService executor =
        new ThreadPoolExecutor(0, maxPoolSize, keepAliveTime, timeUnit, new LinkedBlockingDeque<>());
Run Code Online (Sandbox Code Playgroud)

我提交我的任务

Future<String> result = executor.submit(() -> "test");
Run Code Online (Sandbox Code Playgroud)

如你所见,执行者返回微薄Future; 我宁愿拥有一个CompletableFuture可以和其他人联系CompletableFuture的东西.

番石榴,我们有ListeningExecutorService返回ListenableFutures.ListenableFuture根据我的意图和目的,这些是和CompletableFutures 一样好.

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

Mat*_*aun 9

事后看来很明显:不要试图CompletableFuture从执行者那里获得一个,而是将执行者传递给CompletableFuture.

像这样:

CompletableFuture<String> futureOutput =
        CompletableFuture.supplyAsync(() -> "test", executor);
Run Code Online (Sandbox Code Playgroud)

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