一个类继承父类又实现了Runnable接口如何启动?

时间:2022-05-29 17:32:25
比如说在一个类中如果实现了runable的话,可以这么启动
public class MyThread implements Runnable{
       public void run() {}
}
Thread myThread = new MyThread();
myThread.start();

如果是这样的话
public class MyThread extends AAAA implements Runnable{
       public void run() {}
}
要启动这个类的线程,改如何实现呢?

10 个解决方案

#1


和上面的一样!

#2


多继承了一个类,但还是实现了同样的接口。实现方法不用变,不过类中要增加一个父类的方法。

#3


new Thread(new MyThread ()).start();

#4


楼上正解,跟普通的没区别

#5


建议去看下java.lang.Thread类的源码,尤其是构造子和run()方法
你将会看到有一个构造子的参数被赋予了内部一个类型为Runnable的属性target
而在run()方式调用的时候,会先判定target是否为空,若不为空,则执行target.run()

所以,所有的线程都是Thread的实例,而不是Runnable,Runnable中只有run()而没有其他,想要start()必须将Runnable交给一个Thread

有机会多阅读JDK的源码,你会知道更多

#6


可以这样啊

Thread th = new Thread(new MyThread());
th.start();

#7


抽象能力不行啊。已经在说Runnable了,还管它继承不继承什么父类干什么。Runnable就是Runnable。

#8


该回复于2011-03-15 14:32:13被版主删除

#9


实现了Runnable接口的类其中的run()方法只是一个执行体,实现了Runnable接口的类的对象只是作为一个target传入Thread(Runnable target).当执行线程时,线程对象还是继承了Thread的类的对象,但是它执行的线程体,也就是那个run()是target中的run().

#10


谢谢各位,学到了很多,呵呵

#1


和上面的一样!

#2


多继承了一个类,但还是实现了同样的接口。实现方法不用变,不过类中要增加一个父类的方法。

#3


new Thread(new MyThread ()).start();

#4


楼上正解,跟普通的没区别

#5


建议去看下java.lang.Thread类的源码,尤其是构造子和run()方法
你将会看到有一个构造子的参数被赋予了内部一个类型为Runnable的属性target
而在run()方式调用的时候,会先判定target是否为空,若不为空,则执行target.run()

所以,所有的线程都是Thread的实例,而不是Runnable,Runnable中只有run()而没有其他,想要start()必须将Runnable交给一个Thread

有机会多阅读JDK的源码,你会知道更多

#6


可以这样啊

Thread th = new Thread(new MyThread());
th.start();

#7


抽象能力不行啊。已经在说Runnable了,还管它继承不继承什么父类干什么。Runnable就是Runnable。

#8


该回复于2011-03-15 14:32:13被版主删除

#9


实现了Runnable接口的类其中的run()方法只是一个执行体,实现了Runnable接口的类的对象只是作为一个target传入Thread(Runnable target).当执行线程时,线程对象还是继承了Thread的类的对象,但是它执行的线程体,也就是那个run()是target中的run().

#10


谢谢各位,学到了很多,呵呵