更好的帖子:"implements Runnable" vs. "extends Thread"
我可以用两种方式创建自己的线程类MyThread,
class MyThread extends Thread
or
class MyThread implements Runnable
哪种技术更好,为什么?
在实现Runnable的情况下,我必须从MyThread对象创建Thread对象,比如
MyThread mt = new MyThread();
Thread t = new Thread(mt);
那么实现Runnable Interface技术的优势是什么?
答案 0 :(得分:3)
创建实现Runnable接口的线程更好。因为您可以从其他类扩展新类,否则无法扩展它。
答案 1 :(得分:0)
如果要保留对线程工作的某些控制,如调用interrup()
,则扩展线程会更好。一般来说,当课程是某种管理员或工人时,我会说扩展Thread
是可以的。
在其他情况下,特别是当一个类代表一些工作要做(Job
,Future
)时,实施runnable 要好得多。
答案 2 :(得分:0)
在实现Runnable的情况下,我必须创建Thread对象 来自MyThread对象,如
MyThread mt = new MyThread();
Thread t = new Thread(mt);
非必要
你可以这样做......
Thread t = new Thread(new Runnable () { public void run() { /* do stuff */ }});
......不需要MyThread课程。