首页 新闻 会员 周边

关于CompletableFuture

0
悬赏园豆:100 [已解决问题] 解决于 2021-01-15 16:28
public static void main(String[] args) throws ExecutionException, InterruptedException {
        CompletableFuture future = CompletableFuture.runAsync(new Runnable() {
            @Override
            public void run() {
                System.out.println("只是一个线程而已");
            }
        });

        //System.out.println("123");
    }

为什么这样注释掉System.out.println("123");
System.out.println("只是一个线程而已"); 不执行
但是不注释System.out.println("123");
System.out.println("只是一个线程而已"); 会执行

饼先生的主页 饼先生 | 初学一级 | 园豆:112
提问于:2021-01-15 00:07
< >
分享
最佳答案
1

因为你不注释掉,你的代码就结束了,CompletableFuture用的守护进程跑的呗,没来得及执行,你代码就跑完了,如果你sleep会也可以执行到

收获园豆:100
yytxdy | 小虾三级 |园豆:1680 | 2021-01-15 09:22
其他回答(1)
1

CompletableFuture是异步执行的,他不会影响下面代码的执行,所以如果下面没有任何代码的话,程序直接就执行完毕了,所以一般会调用用他的get()(阻塞等待)方法或者使用sleep等待这个异步线程执行完毕。

编程小大白 | 园豆:530 (小虾三级) | 2021-01-15 10:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册