线程创建和启动
这个问题在这里已经有了答案:
一般来说,你不应该扩展Thread
,而应该实现Runnable
。 你的例子会变成:
class MyRunnable implements Runnable {
public void run() {
// Whatever needs to be done.
}
}
MyRunnable obj = new MyRunnable();
Thread t = new Thread(obj);
t.start()
是的,是有区别的:你不应该延长Thread
,但使用new Thread(myRunnable)
这与您的第一种方法类似,只是您的方式在扩展Thread而不是实现Runnable时被误导。 所以这样做:
class MyRunnable implements Runnable {
public void run() { ... }
}
Thread t = new MyThread(new MyRunnable());
t.start();
或者更方便地,
new Thread(new Runnable() { public void run() {
... stuff ...
}}).start();
一定要区分Thread
和Runnable
的概念:前者是实际系统资源的重量级处理; 后者只是一种方法的持有者。
Thread t = new Thread(obj);
需要Runnable obj
- 推荐的方法。
MyThread obj = new MyThread();
要求你extend
目前被认为不可取的 Thread
。
有关辩论的细节,请参阅“implements Runnable”与“extends Thread”。
链接地址: http://www.djcxy.com/p/92077.html