线程的创建方式:
1.继承Thread,重写run方法。

创建线程类,重写run方法

示例化,条用start方法运行
ps:Thread是实现了Runnable接口的。

二、实现Runable接口。


实现Runable接口,重写run()方法

实例化,作为target传给Thread
三、实现Callable接口

Callable接口里面就只有call方法。

实现一个Callable接口。

还是不能直接执行的,需要传给FutureTask.
我们在看看FutureTask是什么?他还是实现了Runable接口。


区别:
1.Thread和Runable的区别,也就是类和接口的区别,Thread只能单继承,Runable可以多实现,
2.Runable和Callable的区别,
两个都是接口,Callable可以有返回值和能抛出异常。