异步神器CompletableFuture
介绍 上个礼拜我们线上有个接口比较慢,这个接口在刚开始响应时间是正常的。但随着数据量的增多,响应时间变慢了。 这个接口里面顺序调用了2个服务,且2个服务之间没有数据依赖。我就用CompletableFuture把调用2个服务的过程异步化了一下,响应时间也基本上缩短为原来的一半,问题解决。 正好上次分享了函数式接口和Stream的使用,这次就分享一下CompletableFuture,里面也用到了大量的函数式接口 想方便的异步执行任务,就必须放到单独的线程中。继承Thread类,实现Runnable都不能拿到任务的执行结果,这时就不得不提创建线程的另一种方式了,实现Callable接口。 @FunctionalInterface public interface Callable < V > { V call () throws Exception ; } Callable接口一般配合ExecutorService来使用 // ExecutorService.java <T> Future<T> submit (Callable<T> task) ; ExecutorService executor = Executors.newCachedThreadPool(); Future<Integer> result = executor.submit(() -> { int sum =