创建线程的三种方式

(1)继承Thread类;
(2)实现Runnable接口的run方法
(3)使用 FutureTask方式

区别

使用继承的方式,可以在子类里可以定义成员变量,通过set方法或构造器进行传参,runable接口的方式,只能通过主线程定义 final变量,进行参数的传递。

java不支持多继承,继承thread后就不能集成其他类,使用Runable就没有这个问题。

Thread 和 Runable这两种方式都不能拿到返回结果,FutureTask可以获取返回值。

Runable

image.png

FutureTaskimage.png