三种基本创建线程的区别
使用Runnable接口 | 1. 可以将线程代码和线程数据分开,形成清晰模型 2. 可以继承其他类 |
直接继承Thread类 | 1. 不能从其他类继承 2. 编写简单,可以直接操纵线程 |
使用Callable接口和Runnable接口创建线程的区别
Callable | Runnable |
接口规定方法 call() | Run() |
任务执行后可返回值 | 不可返回值 |
call()方法可抛出异常 | Run()方法不可抛出异常 |
运行Callable任务可拿到一个future对象,表示异步运算的结果Future: 1.提供检查计算是否完成的方法,以等待计算的完成,并检索计算的完成 2.通过Future对象可了解任务执行情况,可取消任务执行,还可以获取任务执行情况
|
|
实现callable接口的类是可被其他线程执行的任务 | 同Callable |