2013-04-11 120 views
1

我是初學者,開始學習java編程。螺紋Java代碼問題

我寫了一個程序來嘗試線程。在一個類中,我編寫了一個程序來顯示數字從1到100,在另一個類中顯示999到100之間的數字。現在主要我已經爲類(r1,r2)創建了一個對象引用,並創建了一個對象爲線程並傳遞(我的類的r1,r2對象引用)它們作爲參數。現在我得到的輸出結果並不像預期的那樣,我覺得我的第二個線程沒有被執行。我不確定我的邏輯或程序是否有問題。任何幫助/建議,將不勝感激。我的代碼以供參考。

第1類:

public class Run implements Runnable { 

@Override 
public void run() { 

    for (int i = 0; i < 100; i++) { 
     try { 

      Thread.sleep(200); 
     } catch (InterruptedException ex) { 
      Logger.getLogger(Run.class.getName()).log(Level.SEVERE, "...", ex); 
     } 
     System.out.println(i); 
    } 
} 
} 

二級: 公共類RUN2擴展Thread {

public void run2() { 

    for(int i=999;i>0;i--){ 
     try { 

      Thread.sleep(500); 
     } catch (InterruptedException ex) { 
      Logger.getLogger(Run2.class.getName()).log(Level.SEVERE, "....", ex); 
     } 
     System.out.println(i); 


    } 

} 
} 

主類:

public class Threading { 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 

    Run r= new Run(); 
    Thread t1=new Thread(r); 
    t1.start(); 

    Run2 r2=new Run2(); 
    Thread t2=new Thread(r2); 

    t2.start(); 


} 

} 

回答

2

您的類Run2的方法應該命名爲run而不是run2。

5

重命名RUN2的方法run2run。你是Thread的子類,所以你得到一個沒有任何作用的運行方法(實際上它檢查它是否被傳遞到目標runnable中,在這種情況下,它調用目標上的運行,但由於目標爲null,什麼都不做),這就是運行。

養成實現Runnable而不是擴展Thread的習慣,並使用@Override註釋來捕捉錯誤,如果您認爲自己壓倒了某些東西,但卻不是。

+0

謝謝...... :) – hamid 2013-04-12 16:50:37

+0

@ user2271636:np,這是一個很容易犯的錯誤。希望這可以幫助。 – 2013-04-12 16:58:19

+0

是的,它肯定是按預期工作.. !! :) – hamid 2013-04-12 20:15:50