场景:假如你突然想做饭,但是没有厨具,也没有食材。网上购买厨具比较方便,食材去超市买更放心。
实现分析:在快递员送厨具的期间,我们肯定不会闲着,可以去超市买食材。所以,在主线程里面另起一个子线程去网购厨具。
但是,子线程执行的结果是要返回厨具的,而run方法是没有返回值的。所以,这才是难点,需要好好考虑一下。
模拟代码:
1 packagetest;2
3 importjava.util.concurrent.Callable;4 importjava.util.concurrent.ExecutionException;5 importjava.util.concurrent.FutureTask;6
7 public classFutureCook {8
9 public static void main(String[] args) throwsInterruptedException, ExecutionException {10 long startTime =System.currentTimeMillis();11 //第一步 网购厨具
12 Callable onlineShopping = new Callable() {13
14 @Override15 public Chuju call() throwsException {16 System.out.println("第一步:下单");17 System.out.println("第一步:等待送货");18 Thread.sleep(5000); //模拟送货时间
19 System.out.println("第一步:快递送到");20 return ne