2013-03-09 45 views
2

我不敢相信這給我帶來麻煩。 我的測試extend Thread不起作用,我的implement Runnable。我和過去寫過的工作線程代碼相比,看不出有什麼問題。Java擴展線程不工作,但實現了Runnable。我不明白爲什麼?

有人能指出我的菜鳥錯誤嗎?

不工作

public class PrimeThread extends Thread 
{ 
    long minPrime; 

    public PrimeThread(long minPrime) 
    { 
     this.minPrime = minPrime; 
    } 

    public static void main(String[] args) 
    { 
     PrimeThread p = new PrimeThread(11); 
     p.start(); 
    } 

    public void Run() 
    { 
     System.out.println("wtf"); 
    } 
} 

工作

public class PrimeRun implements Runnable 
{ 
    long minPrime; 
    public PrimeRun(long in) 
    { 
     minPrime=in; 
    } 
    public static void main(String[] args) 
    { 
     PrimeRun p = new PrimeRun(143);  
     new Thread(p).start(); 
    } 

    @Override 
    public void run() 
    { 
     System.out.println("hello"); 
    } 
} 
+0

什麼是不工作?例外?只是沒有運行等 – 2013-03-09 15:19:04

+0

哦不。我剛剛發現了這個問題。 Run()方法應該有小寫字母r ... run() :(太令人尷尬了。過去8天,圖書館每天超過11個小時正在趕上我。 – 2013-03-09 15:24:14

+1

這就是@Override註釋是什麼因爲它會告訴你這種錯誤::-)有一個很好的原因來擴展線程是非常罕見的,它很容易搞砸,所以總的來說最好遠離它。 – 2013-03-09 15:29:25

回答

4

你的 「運行」 的方法是大寫。所以這是一個不同的方法(例如,您不重寫「運行」)

+0

謝謝。發現它。尷尬。 – 2013-03-09 15:25:23

+0

幸運的是,我是這個星球上唯一沒有花費數小時或數天的時間凝視這樣一個錯誤並且撓撓我的頭腦的開發者。我很高興,從來沒有發生過我,根本不知道那是什麼感覺;) – 2013-03-09 15:30:44

2

只需編輯您的方法名稱爲run,而不是Run

相關問題