2。而有的线程是直接继承Thread类,如
Thread newThread = new Thread()
{
public void run()
{
//。。。
}
}
第一种显得不如第二种方法灵活
他们到底有什么区别阿
还有,我想问一下阿,实现了Runable接口的类,一般都还继承了其他的许多类,比如public class MyCanvas extends Canvas implements Runnable。我问一下阿,是不是这些类一 new,run 方法就要运行呢?
18 个解决方案
#1
呵呵,没有什么不同,两种不同的实现手段
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);
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);
#2
java只能单继承,因此如果是采用继承Thread的方法,那么在以后进行代码重构的时候可能会遇到问题,因为你无法继承别的类了,在其他的方面,两者之间并没什么太大的区别
只有在调用了start方法后,线程才进入可运行状态(此时不一定会运行),当cpu时间片到的时候才会自动调用run方法,代码中无需调用run方法
只有在调用了start方法后,线程才进入可运行状态(此时不一定会运行),当cpu时间片到的时候才会自动调用run方法,代码中无需调用run方法
#3
作用相同,方式不同而已。
#4
两种方式都可以的。
如果你用继承Thread的方式,那你就不能继承其他的类了。
我比较喜欢用实现接口的方式。
如果你用继承Thread的方式,那你就不能继承其他的类了。
我比较喜欢用实现接口的方式。
#5
heroboy0923说得对
就是你想继承一个别的类,同时还要多线程的时候,你只能选择从Runnable这种方式
就是你想继承一个别的类,同时还要多线程的时候,你只能选择从Runnable这种方式
#6
写法不同而已。
#7
当你的系统中有多个县城切换的时候 最好事先runable接口,这个和java的多态性可以很好的结合
当你只有一个线程的时候就集成thread即可,因为他没有交替的资源访问
当你只有一个线程的时候就集成thread即可,因为他没有交替的资源访问
#8
表面就一个run方法的区别
#9
2种差不多吧,不过如果你写的这个类还要继承其他的类,那么它只能用接口来实现,因为java中不可以实现多继承。这也是java中提出的一种对单继承的解决方案吧
#10
谢谢楼上各位的回答阿
我想知道:
继承Thread方法的线程t,需要手工t.start来启动该线程
实现了Runnable方法的线程tt,也需要手工tt.start来启动吗?
我想知道:
继承Thread方法的线程t,需要手工t.start来启动该线程
实现了Runnable方法的线程tt,也需要手工tt.start来启动吗?
#11
这两种方式都可以:
Thread.start(你自己写的线程类的实例)
这样启动。注意,start是静态方法。
Thread.start(你自己写的线程类的实例)
这样启动。注意,start是静态方法。
#12
就是这样的
#13
bang mang ding ding ,xiexie
#14
接口可以实现多继承
#15
1.直接继承时:
Thread t = new Thread();
t.start(); //使线程进入就绪状态,等待CPU时间片
2.在使用Runnable的时候需要先new一个实现Runnable的实例,然后调用Thread构造函数。
A impelements Runnable
A a= new A();
Thread tt= new Thread(a);
tt.start(); //使线程进入就绪状态,等待CPU时间片
#16
实现方法不同
#17
实现功能都一样,但是runnable是面向接口,扩展性等方面比extends Thread好,简单的说因为Java是单继承,如果你一个类,需要实现线程,又要继承一个类,显然,使用Thread是不行的。建议使用Runnable面向接口的!
#18
1.A impelements Runnable
A a= new A();
Thread xx= new Thread(a);
Thread yy= new Thread(a);
xx.start();
yy.start();
2. A impelements Runnable
A a= new A();
A a1= new A();
Thread xx= new Thread(a);
Thread yy= new Thread(a1);
xx.start();
yy.start();
请问什么时候适用第一种情况,什么时候适用第2种情况?
A a= new A();
Thread xx= new Thread(a);
Thread yy= new Thread(a);
xx.start();
yy.start();
2. A impelements Runnable
A a= new A();
A a1= new A();
Thread xx= new Thread(a);
Thread yy= new Thread(a1);
xx.start();
yy.start();
请问什么时候适用第一种情况,什么时候适用第2种情况?
#1
呵呵,没有什么不同,两种不同的实现手段
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);
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);
#2
java只能单继承,因此如果是采用继承Thread的方法,那么在以后进行代码重构的时候可能会遇到问题,因为你无法继承别的类了,在其他的方面,两者之间并没什么太大的区别
只有在调用了start方法后,线程才进入可运行状态(此时不一定会运行),当cpu时间片到的时候才会自动调用run方法,代码中无需调用run方法
只有在调用了start方法后,线程才进入可运行状态(此时不一定会运行),当cpu时间片到的时候才会自动调用run方法,代码中无需调用run方法
#3
作用相同,方式不同而已。
#4
两种方式都可以的。
如果你用继承Thread的方式,那你就不能继承其他的类了。
我比较喜欢用实现接口的方式。
如果你用继承Thread的方式,那你就不能继承其他的类了。
我比较喜欢用实现接口的方式。
#5
heroboy0923说得对
就是你想继承一个别的类,同时还要多线程的时候,你只能选择从Runnable这种方式
就是你想继承一个别的类,同时还要多线程的时候,你只能选择从Runnable这种方式
#6
写法不同而已。
#7
当你的系统中有多个县城切换的时候 最好事先runable接口,这个和java的多态性可以很好的结合
当你只有一个线程的时候就集成thread即可,因为他没有交替的资源访问
当你只有一个线程的时候就集成thread即可,因为他没有交替的资源访问
#8
表面就一个run方法的区别
#9
2种差不多吧,不过如果你写的这个类还要继承其他的类,那么它只能用接口来实现,因为java中不可以实现多继承。这也是java中提出的一种对单继承的解决方案吧
#10
谢谢楼上各位的回答阿
我想知道:
继承Thread方法的线程t,需要手工t.start来启动该线程
实现了Runnable方法的线程tt,也需要手工tt.start来启动吗?
我想知道:
继承Thread方法的线程t,需要手工t.start来启动该线程
实现了Runnable方法的线程tt,也需要手工tt.start来启动吗?
#11
这两种方式都可以:
Thread.start(你自己写的线程类的实例)
这样启动。注意,start是静态方法。
Thread.start(你自己写的线程类的实例)
这样启动。注意,start是静态方法。
#12
就是这样的
#13
bang mang ding ding ,xiexie
#14
接口可以实现多继承
#15
1.直接继承时:
Thread t = new Thread();
t.start(); //使线程进入就绪状态,等待CPU时间片
2.在使用Runnable的时候需要先new一个实现Runnable的实例,然后调用Thread构造函数。
A impelements Runnable
A a= new A();
Thread tt= new Thread(a);
tt.start(); //使线程进入就绪状态,等待CPU时间片
#16
实现方法不同
#17
实现功能都一样,但是runnable是面向接口,扩展性等方面比extends Thread好,简单的说因为Java是单继承,如果你一个类,需要实现线程,又要继承一个类,显然,使用Thread是不行的。建议使用Runnable面向接口的!
#18
1.A impelements Runnable
A a= new A();
Thread xx= new Thread(a);
Thread yy= new Thread(a);
xx.start();
yy.start();
2. A impelements Runnable
A a= new A();
A a1= new A();
Thread xx= new Thread(a);
Thread yy= new Thread(a1);
xx.start();
yy.start();
请问什么时候适用第一种情况,什么时候适用第2种情况?
A a= new A();
Thread xx= new Thread(a);
Thread yy= new Thread(a);
xx.start();
yy.start();
2. A impelements Runnable
A a= new A();
A a1= new A();
Thread xx= new Thread(a);
Thread yy= new Thread(a1);
xx.start();
yy.start();
请问什么时候适用第一种情况,什么时候适用第2种情况?