2

更好的帖子:“实现可运行”与“扩展线程”

我可以通过两种方式创建自己的线程类 MyThread,

class MyThread extends Thread
or
class MyThread implements Runnable

哪种技术更好,为什么?

在实现 Runnable 的情况下,我必须从 MyThread 对象创建 Thread 对象,例如

MyThread mt = new MyThread();
Thread t = new Thread(mt);

那么实现可运行接口技术的优势是什么?

4

3 回答 3

4

虽然创建一个实现 Runnable 接口的线程更好。因为你可以从其他类扩展你的新类,否则你不能扩展它。

于 2013-04-18T07:05:09.267 回答
0

如果您想保留对线程工作的一些控制,例如调用interrup(). 一般来说,Thread当类是某种 Manger 或 Worker 时,我会说扩展 a 是可以的。

在其他情况下,尤其是当一个类代表一些要完成的工作时(Job, Future),最好实现 runnable

于 2013-04-18T07:17:25.407 回答
0

在实现 Runnable 的情况下,我必须从 MyThread 对象创建 Thread 对象,例如

MyThread mt = new MyThread();
Thread t = new Thread(mt);

不必要

你可以这样做...

Thread t = new Thread(new Runnable () { public void run() { /* do stuff */ }});

...不需要 MyThread 类。

于 2013-04-18T07:31:55.430 回答