这是我以前的总结,希望对你有帮助!
实现方式和继承方式的区别
实现方式好处:避免单继承的局限性;
JDK API中如是描述,Runnable 为非 Thread 子类的类提供了一种激活方式。通过实例化某个 Thread 实例并将自身作为运行目标,就可以运行实现 Runnable 的类而无需创建 Thread 的子类。大多数情况下,如果只想重写 run() 方法,而不重写其他 Thread 方法,那么应使用 Runnable 接口。
区别:
继承Thread;线程代码存放在thread子类run方法中;
实现runnable,线程代码存放在接口子类的run方法。
总结:
创建线程的第一种方式:继承Thread类
优点:代码相对简单,访问当前线程即可以使用this,也可以使用Thread.currentThread()方法;
缺点:java只支持单继承,所以继承了Thread,就不能继承其他的父类,有一定的局限性。
创建线程的第二种方式:实现Runnable接口
优点:线程采用实现Runnable接口的方式,还可以继承其他类,因而多个线程可以共享一个对象资源;
缺点:代码相对复杂,访问当前线程只能使用Thread.currentThread()方法。 |