如下图展示并发和并行CPU核心执行的方式
我们想让同一个CPU执行几个松耦合的任务,充分利用CUP核,避免因为等待,而阻塞线程执行,浪费宝贵的计算资源。CompletableFuture是处理这种情况的利器。
1 Future接口
1.1 Future UML
1.2 Future示例
用一个小案例来演示Future接口
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(2, 2, 10, TimeUnit.SECONDS, new LinkedBlockingQueue<>(100));
// 1 提交一个callable任务
Future<Object> future = threadPoolExecutor.submit(() -> {
doSomething();
return true;
});
// 2 同步执行方法2
doSomething2();
// 3 同步获取异步方法1的结果
Object o = future.get();
System.out.println(o);
1 首先我们向线程池提交一个Callable的异步任务,Future对象封装任务的返回值。 2 示例中future对象是FutureTask类型对象,get()同步等待异步任务执行结束。get()也可设置超时时间。