之前通过继承Thread类实现多线程,通过Runnable接口+静态代理实现多线程
但是有一个不足之处是,重写run方法时没有返回值也不能抛出异常
使用Callable接口就可以解决这个问题
Callable接口和Runnable接口的不同之处:
1.Callable规定的方法是call,而Runnable是run
2.call方法可以抛出异常,但是run方法不行
3.Callable对象执行后可以有返回值,运行Callable任务可以得到一个Future对象,通过Future对象可以了解任务执行情况,可以取消任务的执行,而Runnable不可有返回值
多线程的实现有以下4个步骤:
1.创建一个线程,创建Callable的实现类Race,并且重写call方法