Future模式有点类似于网上购物,在你购买商品,订单生效之后,你可以去做自己的事情,等待商家通过快递给你送货上门。
在并发编程中,我们经常用到非阻塞的模型,在多线程的三种实现中,不管是继承thread类还是实现runnable接口,都无法保证获取到执行结果。通过实现Callback接口,并用Future可以来接收多线程的执行结果。
代码模拟
public class Test { public static class Task implements Callable<String> { @Override public String call() throws Exception { System.out.println("等待送货"); Thread.sleep(5000); System.out.println("快递送到"); return "订单结束"; } } public static void main(String[] args) throws InterruptedException, ExecutionException { System.out.println("网购下单成功"); ExecutorService executor = Executors.newCachedThreadPool(); Task task = new Task(); Future<String> result = executor.submit(task); System.out.println("开始大扫除"); Thread.sleep(2000); System.out.println("大扫除结束"); System.out.println(result.get()); } }