线程创建的方式说是有四种, 但是实际上只有一种创建方式. 为什么?
因为不管是 Callable 还是线程池创建线程, 看它们的实现方式或者说底层源码,其本质上都是通过创建 Thread 对象来实现真正的创建线程. 而实现 Runable 接口, 给我的感觉就是把重写 Thread 的 run 方法提出来成为一个可重复利用的任务, 这样创建相同任务的线程就比较方便.
- 至于线程池为什么用到 Thread, 可以查看线程创建工厂 threadFactory 底层的接口, 就是一系列的判断和 new Thread.
- Callable 就是类似, 不过把任务换成了
FutureTask
作为任务对象, 从而能够拿到线程执行的结果.