异步执行


1 需要线程返回信息

public void execute(){
        //来一个线程池
        ExecutorService executor = Executors.newFixedThreadPool(2);
        CompletableFuture future1= CompletableFuture.supplyAsync(new Supplier()
        {
            @Override
            public Integer get() {
                for(int i=0;i<10;i++) {
                    System.out.println("task1:"+i);
                    sleep(1000);
                }
                
                return 333;
            }
        },executor);
        
        
        CompletableFuture future2 =CompletableFuture.supplyAsync(new Supplier()
        {
            @Override
            public Integer get() {
                for(int i=0;i<10;i++) {
                    System.out.println("task2:"+i);
                    sleep(1000);
                }
                return 666;
            }
        },executor);
        
        //等待所有任务执行结束
        CompletableFuture all= CompletableFuture.allOf(future1,future2);
        all.thenAccept(e->{
            //关闭线程池
            executor.shutdown();
            System.out.println("执行结束");
           
        });
}

    static void sleep(long millis) {
        try {
            Thread.sleep(millis);
        }
        catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }



2 仅执行

//线程池
        ExecutorService executor = Executors.newFixedThreadPool(2);
        
     
        CompletableFuture future1= CompletableFuture.runAsync(()->{
           
        },executor);
        
        CompletableFuture future2 =CompletableFuture.runAsync(()->{
        
        },executor);
        
        //等待完成
        try {
            CompletableFuture.allOf(future1,future2).get();
        }
        catch (InterruptedException|ExecutionException e ) {
            e.printStackTrace();
        }
        executor.shutdown();
        System.out.println("执行完毕");