Callable
-
实现多线程的方法
- 继承thread类
- 实现runnable接口
- 实现callable接口
- java的线程池获得
-
callable与runnable的区别
class MyThread implements Runnable{ @Override public void run() { } } class MyThread2 implements Callable<Integer>{ @Override public Integer call() throws Exception { return null; } }
- 实现方法不一样,不能直接替换Runnable接口
- 是否有返回值,callable有泛型
- 但是两个都是函数式接口
-
Callable接口如何使用
- 通过runnable与callable共同的实现类搭建桥梁,来使用callable接口(FutureTask)
-
FutureTask未来任务
- 并行计算,将复杂的任务提出去并行运行,简单任务串行
- get要放在主线流程结束时调用,防止提前阻塞
- 一个FutureTask对象只会计算一次,想要多次计算可以新建多个FutureTask对象
- 使用lamda表达式来建立线程,更加简洁