2012-06-17 55 views
7

可能重複創建線程的:
Java: 「implements Runnable」 vs. 「extends Thread」使用通過擴展Thread類

Java提供了兩個選擇要麼通過實現Runnable或擴展Thread類來創建一個Thread類,即。

我知道可以有很多原因來實現一個Runnable,但不知道場景將在哪裏擴展一個Thread類來創建自己的Thread類?

能否請您給我提供的方案,其中延長主題似乎是可行的或更好的選擇,或者有利...

有在線程 Question但did'nt回答我的問題

回答

2

有幾乎沒有理由擴展線程,基本上你想要擴展線程的唯一原因是如果你要覆蓋run()以外的東西,這通常是一個壞主意。擴展Thread不常見的原因是因爲那麼這個類不能擴展其他任何東西,並且如果你只是覆蓋run()方法,那麼擴展Thread並且不實現Runnable是沒有意義的。

0

Runnable是一個接口,只有一個方法run()需要由實現該接口的類來實現。

例如

public class MyRunnable implements Runnable { 
    @Override 
    public void run() { 
     //... 
    } 
} 

MyRunnable不是Thread也不能僅僅通過使用類來創建一個新的線程。所以,它並不完全意義地說 -

Java提供了兩個選擇要麼通過實現Runnable創建Thread類,即...

可以擴展Thread類,但就像@約翰說,這樣做沒有任何意義。

但是,如果你想在一個新的線程來執行一些代碼,然後下面是最好的方法 -

MyRunnable r = new MyRunnable(); 
Thread t = new Thread(r); 
t.start(); 

t.start()方法啓動一個新的線程,並調用rrun()方法(這是MyRunnable實例

+0

我其實知道如何創建一個線程的這個概念,但是想通過擴展一個類而不是實現一個接口來實際創建一個線程;) – Satya