黑马程序员技术交流社区
标题:
线程问题
[打印本页]
作者:
王睿
时间:
2012-3-17 16:08
标题:
线程问题
本来ChePiao应该实现Runnable接口,我写错了继承了Thread类,没想到也能运行。
是不是因为Thread实现了Runnable所以继承他的类就也实现了Runnable接口呢???
public class Text {
public static void main(String[] args) {
ChePiao c1 = new ChePiao();
Thread t1 = new Thread(c1);
Thread t2 = new Thread(c1);
Thread t3 = new Thread(c1);
Thread t4 = new Thread(c1);
t1.start();
t2.start();
t3.start();
t4.start();
}
}
class ChePiao extends Thread {
private int num = 100;
@Override
public void run() {
while(num>0){
System.out.println(Thread.currentThread().getName()+"车票..."+ num--);
}
}
}
复制代码
作者:
于紫洋
时间:
2012-3-17 16:11
这
创建线程不就是这两种方法么
继承Thread类
和实现Runnable接口
你继承创建线程当然是没问题的啦
萌呆属性爆发了啊
作者:
刘基军
时间:
2012-3-17 16:38
查看API,Thread类:
extends Object
implements Runnable
作者:
王亚男
时间:
2012-3-17 17:07
本帖最后由 王亚男 于 2012-3-17 17:21 编辑
你这例子是挺有意思的。
ChePiao类本身就继承了Thread,而Thread本身也实现了Runnable接口。
而你这句:
ChePiao c1 = new ChePiao(); //已经创建了一个线程,本可以直接调用start
Thread t1 = new Thread(c1); //又创建一个线程,这句话调用的应该是Thread(Runnable target),而把c1当成了Runnable的算是子类对象吧,形成多态了吧。。起到了相同的作用,而且num也是唯一的,因为只建立了一个ChePiao类对象。不过建议你还是使用实现方式,毕竟单继承的局限性在那放着。
作者:
zhouxp3323
时间:
2012-3-17 18:33
应该是ChePiao c1 = new ChePiao();和Thread t1 = new Thread(c1);都行,这就建立了两个线程。一个c1一个t1。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2