- Runnable接口代码
public interface Runnable {
public abstract void run();
}
- Callable接口代码
public interface Callable<V> {
V call() throws Exception;
}
相同点:
- 两者都需要调用Thread.start()启动线程
- 两者都能编写多线程
不同点:
- Callable规定的方法是call(),Runnable规定的方法是run()
- Callable的任务执行后可返回值,而Runnable的任务是不能返回值的
- call方法可以抛出异常,run方法不可以
- 运行Callable任务可以拿到一个Future对象,表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。通过Future对象可以了解任务执行情况,可取消任务的执行,还可获取执行结果。