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("只是一个线程而已"); 会执行
因为你不注释掉,你的代码就结束了,CompletableFuture用的守护进程跑的呗,没来得及执行,你代码就跑完了,如果你sleep会也可以执行到
CompletableFuture是异步执行的,他不会影响下面代码的执行,所以如果下面没有任何代码的话,程序直接就执行完毕了,所以一般会调用用他的get()(阻塞等待)方法或者使用sleep等待这个异步线程执行完毕。