在写线程前都需要extends Thread或者implements Runnable。
而通常都是使用后者。想了解一下使用这两个有什么区别?

解决方案 »

  1.   

    采用继承Thread类方式:
    (1)优点:编写简单,如果需要访问当前线程,无需使用Thread.currentThread()方法,直接使用this,即可获得当前线程。
    (2)缺点:因为线程类已经继承了Thread类,所以不能再继承其他的父类。
    采用实现Runnable接口方式:
    (1)优点:线程类只是实现了Runable接口,还可以继承其他的类。在这种方式下,可以多个线程共享同一个目标对象,所以非常适合多个相同线程来处理同一份资源的情况,从而可以将CPU代码和数据分开,形成清晰的模型,较好地体现了面向对象的思想。
    (2)缺点:编程稍微复杂,如果需要访问当前线程,必须使用Thread.currentThread()方法。
      

  2.   

    thread 类不能多继承
    接口就是来解决多重继承的的,明白了吧
      

  3.   

    线程只与Thread有关,每个Java线程都有一个相关联的Thread对象
      

  4.   

    可否举个实例来看一下?Runnable是如何实现共享同一个目标而Thread则不行?