2013-04-18 63 views
2

更好的帖子更好的方法:"implements Runnable" vs. "extends Thread"爲MyThread的類

我可以創建自己的線程類MyThread的兩種方式,

class MyThread extends Thread 
or 
class MyThread implements Runnable 

哪個技術更好一些,爲什麼?

而且在實現Runnable,我要創建MyThread的對象Thread對象的情況下,像

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

那麼什麼是實現Runnable接口技術的優勢在哪裏?

回答

3

雖然創建一個實現Runnable接口的線程更好。因爲你可以從其他課程擴展你的新課程,否則你不能擴展它。

0

如果你想保留對線程工作的一些控制,比如調用interrup(),擴展線程更好。總的來說,我認爲當課程是某種經理或工作人員時,擴大Thread即可。

在其他情況下,尤其是當一個類代表做了一些工作(JobFuture)是更好的做法是實現Runnable

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類。