2014-10-10 61 views
0
public class Test extends Thread { 

    public void run() { 

      System.out.println("done"); 
     } 

    public static void main(String[] args) { 

      Thread t = new Thread(new Program33()); 
      t.start(); 

    } 
} 

//java.lang.Thread類沒有任何將線程作爲參數的構造函數,那麼爲什麼此程序成功運行。Java中的線程構造函數行爲

+1

_「// java.lang.Thread類沒有任何將Thread作爲參數的構造函數,」_和什麼是構造函數Thread(Runnable target)?請記住線程是可運行的 – user2336315 2014-10-10 14:29:12

+1

什麼是'Program33'?也許,它實現了'Runnable'? – 2014-10-10 14:29:21

+0

@VictorSorokin,它是我的程序的名稱。 – Aamir 2014-10-10 14:35:00

回答

2

Thread類有構造函數的Runnable

public Thread(Runnable target) 

和線程實現Runnable。 你可以看到http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#Thread(java.lang.Runnable,%20java.lang.String)

+0

但我的程序擴展了Thread,它沒有實現Runnable。 – Aamir 2014-10-10 14:34:39

+1

但該線程實現Runnable,所以如果你的程序擴展的東西,實現Runnable其也以某種方式實現可運行.. ,如果他們是像公共線程(obj對象) ,所以你可以把任何對象的構造,雖然它沒有明確的擴展對象.. – Alon 2014-10-10 14:37:42

+0

我明白了,謝謝你的幫助。如果你有空,我還有一個問題,我早些時候發佈,你可以幫我一下。這裏是http://stackoverflow.com/questions/26291626/how-to-put-composite-id-for-this-personpk-class – Aamir 2014-10-10 14:40:08

2

Thread有一個構造函數,它需要一個RunnableThread類確實實現了Runnable接口。

構造函數在這裏被調用。

假設您的Programm33要麼extends Thread要麼implements Runnable,您的代碼將被編譯。

請參閱API

+0

可以實現Runnable的構造函數將線程對象作爲參數。 – Aamir 2014-10-10 14:30:11

+0

@Airir'class'實現'Runnable'。構造函數不能實現任何東西。由於'Thread' **是一個**''Runnable',所以'new Thread(Runnable r)'等價於'new Thread(myPreviousThread)'。 – Mena 2014-10-10 14:31:26

+0

感謝您的解釋。 – Aamir 2014-10-10 14:33:07