我遇到了同样的问题,但是在阅读了更多来自此处的评论和参考书之后,我认为您可以执行以下两种方法之一:
1(我最终要做的):
CompletableFuture.runAsync(() -> {
transporter.write(req);
try {
Rep rep = responseQueue.take();
result.complete(rep);
} catch (Exception e) {
throw new CompletionException(e);
}
}, executorService);
return result;
或 2:
CompletableFuture<Rep> result = new CompletableFuture<>();
new Thread(()-> {
transporter.write(req);
try {
Rep rep = responseQueue.take();
result.complete(rep);
} catch (Exception e) {
result.completeExceptionally(e);
}
}).start();
我知道第二个没有使用,但我觉得使用ComppletableFuture的全部意义在于以函数式的方式使用CompendationStage API。executorService