1继承 Thread
重写 run方法
2实现 Runnable
3实现 Callable
重写Call方法又返回值
Runnable 和Callable的区别
1 Callable规定的方法是call()Runnnable规定的方法是run()
2Callable的任务执行后可以返回值 Runnable的任务不能有返回值
3 call方法可以抛异常,run方法不可以
4运行Callable任务可以拿到一个Funture对象 表示异步计算的结果。提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。通过Future对象可以了解任务执行情况,可取消任务的执行,还可获取执行结果。