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的源码,你会知道更多
你将会看到有一个构造子的参数被赋予了内部一个类型为Runnable的属性target
而在run()方式调用的时候,会先判定target是否为空,若不为空,则执行target.run()
所以,所有的线程都是Thread的实例,而不是Runnable,Runnable中只有run()而没有其他,想要start()必须将Runnable交给一个Thread
有机会多阅读JDK的源码,你会知道更多
#6
可以这样啊
Thread th = new Thread(new MyThread());
th.start();
Thread th = new Thread(new MyThread());
th.start();
#7
抽象能力不行啊。已经在说Runnable了,还管它继承不继承什么父类干什么。Runnable就是Runnable。
#8
#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的源码,你会知道更多
你将会看到有一个构造子的参数被赋予了内部一个类型为Runnable的属性target
而在run()方式调用的时候,会先判定target是否为空,若不为空,则执行target.run()
所以,所有的线程都是Thread的实例,而不是Runnable,Runnable中只有run()而没有其他,想要start()必须将Runnable交给一个Thread
有机会多阅读JDK的源码,你会知道更多
#6
可以这样啊
Thread th = new Thread(new MyThread());
th.start();
Thread th = new Thread(new MyThread());
th.start();
#7
抽象能力不行啊。已经在说Runnable了,还管它继承不继承什么父类干什么。Runnable就是Runnable。
#8
#9
实现了Runnable接口的类其中的run()方法只是一个执行体,实现了Runnable接口的类的对象只是作为一个target传入Thread(Runnable target).当执行线程时,线程对象还是继承了Thread的类的对象,但是它执行的线程体,也就是那个run()是target中的run().
#10
谢谢各位,学到了很多,呵呵