FutureTask和Callable学习
1、我的理解
/** * * 一、什么叫未来任务FutureTask * 定义:从字面上理解未来要执行的任务,未来需要通过手动的方式去取结果。 * 举例:老师上课的时候突然渴了,让班长买水,老师要喝的时候去取. * 二、和回调函数的区别 * 回调函数会主动的通知结果,未来任务不是,需要主动的去取 * * 三、Callable和Runable的区别 * callable 接口有返回值 * callable 接口的方法会抛异常 * * 四、FutureTask 理解 * FutureTask 继承Runnable接口、构造器里面需要传一个Callable 接口。 * * 五、创建线程的方式 * 1、继承Thread 类、2、实现Runable 接口、3、实现callable接口 4、线程池 * 无论实现Runable 接口还是实现callable接口 都需要借助Thread类 * * */
2、代理举例
// 构造一个异步执行的对象,构造参数是callable 接口 FutureTask<String> futureTask1 = new FutureTask<String>(()->{ System.out.println(Thread.currentThread().getName()+"come in callable"); return "gaohq"; }); new Thread(futureTask1,"lucy").start(); while (!futureTask1.isDone()){ System.out.println("wait....."); } System.out.println(futureTask1.get()); System.out.println("\n"); System.out.println(futureTask1.get());