使用 Runnable 接口来实现多线程使得我们能够在一个类中包容所有的代码,有利于封装,它的缺点在于,我们只能使用一套代码,若想创建多个线程并使各个线程执行不同的代码,则仍必须额外创建类,如果这样的话,在大多数情况下也许还不如直接用多个类分别继承 Thread 来得紧凑。什么意思呢??

解决方案 »

  1.   

    @(×#……%(@#
    还真说不出来发现我要打的时候
    就像一个程序里面可以同时做几件事情用runnable好
    要同时开几个程序做同一件事情用thred好
    我是这么理解的
      

  2.   

    Thread 要求你的类必须集成他,由于Java只允许单一集成,你这个类就不能继承其它类了!所以,为了灵活考虑,建议用 Runnable 接口来实现线程如果你的类很简单,用 extends Thread 也是很好的选择。
      

  3.   

    就是说Runnable是一个接口,一个类可以并且只可以继承一个类,但是一个类可以实现多个接口。所以当你的类已经继承了其他的类,就没有办法继承Thread类了,但这个时候你想实现线程的话就可以使用Runnable接口。就是这样啊~~
      

  4.   


    说的经典,做程序是要尽量多的使用实现接口,而不是继承类。原因就是java只能单继承。
      

  5.   

    一个类可以只可以继承一个类,但是一个类可以实现多个接口。
    就比如你可以实现Runnable,也可以实现其他的接口。 所以当你想继承Thread类,又想用其他的功能而继承其他类的时候不可实现了,所以要实现Runnable接口,继承包含你想用的其他功能的类,增加了灵活性! 
      

  6.   

    补充一下, 
    只要分别实现Runnable 接口就可以了, 而且还不影响该类去继承其他的父类
      

  7.   

    实现Runnable接口相对于继承Thread类来说,有如下显著的好处:
    1.适合多个相同程序代码的线程去处理同一资源的情况,把虚拟CPU(线程)同程序的代码、数据有效分离,较好地体现了面向对象的设计思想。
    2.可以避免由于JAVA的单继承特性带来的局限。我们经常碰到这样一种情况,即当我们要将已继承了某一个类的子类放入多线程中,由于一个类不能同时有两个父类,所以不能用继承Thread类的方式,那么,这个类就只能采用实现Runnable接口的方式了。
    3.有利于程序的健壮性,代码能够被多个线程共享,代码与数据是独立的。当多个线程的执行代码来自同一个类的实例时,即称它们共享相同的代码。多个线程可以操作相同的数据,与它们的代码无关。当共享访问相同的对象时,即它们共享相同的数据。当线程被构造时,需要的代码和数据通过一个对象作为构造函数实参传递进去,这个对象就是一个实现了Runnable接口的类的实例。
    事实上,几乎所有多线程应用都可以用实现Runnable接口的方式。
      

  8.   

    就是说Runnable是一个接口,一个类可以并且只可以继承一个类,但是一个类可以实现多个接口。 所以当你的类已经继承了其他的类,就没有办法继承Thread类了,但这个时候你想实现线程的话就可以使用Runnable接口。 
    为了灵活性考虑