实现runnable接口更好
原因:
- 代码架构上来说,具体执行的任务应该是和线程类(线程创建和运行机制)是解耦的
- 继承thread类的形式,每次新建一个任务都需要创建一个新的独立线程->运行->销毁,性能损耗较大,实现runnable接口的形式可以调用线程池等实现线程复用,减少线程的创建和销毁带来的损耗
- 继承Thread类后,由于java不支持多继承,限制了该类的可扩展性
本质对比:
- 继承thread类,覆盖了整个run方法
- 传入runnable对象,执行他的run方法
总结:
可以说,创建线程只有一种方式 – 构造thraed类,而实现线程执行单元有两种方式
- 实现runnable接口,将runnable的实例传给thread
- 继承thread类,重写thread的run方法