gpt4 book ai didi

java - CompleteableFutures 的 runAsync

转载 作者:行者123 更新时间:2023-12-01 07:44:09 25 4
gpt4 key购买 nike

我写了下面的代码

ExecutorService service = Executors.newFixedThreadPool(3);
Runnable task = () -> { System.out.println( " This is task " +Thread.currentThread().getName() ); };
CompletableFuture<Void> cf = CompletableFuture.runAsync(task,service);

System.out.println( " Printing here -- " + cf.get());

我得到以下输出

This is task pool-1-thread-1
Printing here -- null

我的问题是为什么我得到 null?是因为 runAsync 不返回任何内容,因此 cf.get() 始终为 null。

然后我还有一个疑问,我创建了 3 个线程的 ThreadPool.那么“This is task”不应该打印3次吗?

最佳答案

您得到 null 因为 cf.get() 返回 null。不是因为 cf 为空。如果 cf 为 null,则会抛出空指针异常。

创建大小为 3 的线程池意味着您创建了一个线程池,其中执行程序服务将并行执行 3 个任务。您创建了一个任务,因此只有一个输出。

关于java - CompleteableFutures 的 runAsync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57535591/

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