Java Future 总是返回 null

Cyd*_*hra 5 java null future

嘿,我有一个关于 Java Futures 的快速问题。我将问题分解为以下代码段:

    ExecutorService service = Executors.newCachedThreadPool();
    try {
        System.out.println(service.submit(new FutureTask<>(() -> true)).get());
    } catch (InterruptedException e1) {
        e1.printStackTrace();
    } catch (ExecutionException e1) {
        e1.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

我希望这会在我的终端上输出“true”。但它总是输出空值。我错过了什么?

Kay*_*man 5

这就是在FutureTask抛弃逻辑。你() -> trueCallable<Boolean>返回true,但是FutureTask是一个Runnable不返回值。因此submit返回 a Future<Void>(因为它正在获取一个Runnable参数,而不是 a Callable),它总是包含空值。

删除不必要的FutureTask包装器,直接使用Callable