通常情况下,线程创建方式有如下2种,它们的区别如下:
继承Thread类 | 实现Runable接口 |
---|---|
用this直接指代当前线程对象 | 必须使用Thread.currentThread()去获取当前线程对象 |
创建的Thread子类对象即可代表线程对象,例如:new FirstThread().start() | 创建的Runnable对象即只能作为线程对象的target,例如:new Thread(new SecondThread(),"线程2").start() |
多个线程之间不能共享线程类的实例变量 | 多个线程之间可以共享线程类(实际上应该是线程的target类)的实例变量 |
不可以再继承其他类了 | 还可以继承其他类 |
多个线程可以共享同一个target对象,非常适合多个相同线程来处理同一份资源的情况,从而可以将CPU、代码和数据分开,形成清晰的模型,较好地体现“面向对象”的思想 |
综上所述,通常使用实现Runnable接口的方式来创建线程。