2013-03-09 66 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