Future

2018-11-06  本文已影响0人  writeanewworld

1.future应用场景实际操作

import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
public class SimpleTest {

public static void main(String[] args) {
    long startTime = System.currentTimeMillis();

    // 第一步 网购厨具
    Callable<Chuju> onlineShopping = new Callable<Chuju>() {
        public Chuju call() throws Exception {
            System.out.println("下单 等待送货...");
            Thread.sleep(5000);// 模拟送货时间
            System.out.println("签收 厨具送到...");
            return new Chuju();
        }
    };

    FutureTask<Chuju> task = new FutureTask<Chuju>(onlineShopping);
    new Thread(task).start();

    
    try {
        // 第二步 去超时购买食材
        Thread.sleep(2000);// 模拟购买食材时间
        Shicai shicai = new Shicai();
        System.out.println("食材到位...");

        // 第三步 用网购来的厨具烹饪食材
        if (!task.isDone()) {
            System.out.println("厨具还没到...");
        }
        Chuju chuju = task.get();
        System.out.println("收到厨具 开始做饭...");
        cook(chuju,shicai);
        System.out.println("总共用时:" + (System.currentTimeMillis() - startTime));
        
    } catch (Exception e) {
        e.printStackTrace();
    }
}

static void cook(Chuju chuju,Shicai shicai) {
       System.out.println("做饭中...");
       //do somthing
       System.out.println("做饭结束...");
}

static class Chuju {

}

static class Shicai {

}
}
上一篇 下一篇

猜你喜欢

热点阅读