实现 Runnable 接口和继承Thread 类的线程有什么区别
1。我看有的线程是实现了 Runable 接口,然后在新的类里重写 run方法
2。而有的线程是直接继承Thread类,如
Thread newThread = new Thread()
{
public void run()
{
//。。。
}
}
第一种显得不如第二种方法灵活
他们到底有什么区别阿
还有,我想问一下阿,实现了Runable接口的类,一般都还继承了其他的许多类,比如public class MyCanvas extends Canvas implements Runnable。我问一下阿,是不是这些类一 new,run 方法就要运行呢?
------解决方案--------------------呵呵,没有什么不同,两种不同的实现手段
Runnable是Thread的接口,在大多数情况下都喜欢用接口去生成线程,接口可以多继承么。
----》》》我问一下阿,是不是这些类一 new,run 方法就要运行呢?
Thread Test = new Thread();
Test.start();
在使用Runnable的时候需要先new一个实现Runnable的实例,然后调用Thread构造函数。
A impelements Runnable
A a= new A();
Thread xx= new Thread(a);
------解决方案--------------------java只能单继承,因此如果是采用继承Thread的方法,那么在以后进行代码重构的时候可能会遇到问题,因为你无法继承别的类了,在其他的方面,两者之间并没什么太大的区别
只有在调用了start方法后,线程才进入可运行状态(此时不一定会运行),当cpu时间片到的时候才会自动调用run方法,代码中无需调用run方法
------解决方案--------------------作用相同,方式不同而已。
------解决方案--------------------两种方式都可以的。
如果你用继承Thread的方式,那你就不能继承其他的类了。
我比较喜欢用实现接口的方式。
------解决方案--------------------heroboy0923说得对
就是你想继承一个别的类,同时还要多线程的时候,你只能选择从Runnable这种方式
------解决方案--------------------写法不同而已。
------解决方案--------------------当你的系统中有多个县城切换的时候 最好事先runable接口,这个和java的多态性可以很好的结合
当你只有一个线程的时候就集成thread即可,因为他没有交替的资源访问
------解决方案--------------------表面就一个run方法的区别
------解决方案--------------------2种差不多吧,不过如果你写的这个类还要继承其他的类,那么它只能用接口来实现,因为java中不可以实现多继承。这也是java中提出的一种对单继承的解决方案吧
------解决方案--------------------这两种方式都可以:
Thread.start(你自己写的线程类的实例)
这样启动。注意,start是静态方法。
------解决方案--------------------
------解决方案--------------------bang mang ding ding ,xiexie
------解决方案--------------------接口可以实现多继承
------解决方案--------------------
------解决方案--------------------实现方法不同