创建线程的几种方式
继承 Thread 类重写 run 方法或者 new Thread 重写 run 方法
继承Thread类

直接new Thread重写run方法

lamada简化

实现 Runnable 接口
将Runnable作为target传递给线程执行


将线程与任务(Runnable)分开
使用Runnable更容易与线程池等高级API配合
使用Runnable让任务类脱离了Thread继承体系,更灵活
实现 Callable 接口,并结合 Future 实现


源码中的注释

Callable 与 Runnable 的区别
- Callable可以抛出异常,Runnable不可以
- Callable可以获取任务执行后的返回值,Runnable不可以

FutureTask:


通过线程池创建线程(推荐)
创建Runnable作为任务给线程池执行


浙公网安备 33010602011771号