无法在Runnable中实现run()方法

3
public class Reader extends Thread{

...

    public static void run()throws InterruptedException{

        Monitor mon = new Monitor();

            for(int i = 0; i <10; i++)
            {
                mon.MonEntry();



                Read("file.txt");

                mon.MonExit();
            }

    }
}

因为它显示“无法在Runnable中实现run()”,所以我不能使用扩展Thread的某些功能。我不知道我做错了什么?当我们调用extends Thread而不是implement Runnable时,我们应该能够使用自己的run()实现来启动线程,对吗?

2个回答

12

这只是一个公共的void方法,没有静态属性。

请看文档。它清楚地显示是public void :-)

另外,应避免使用Reader这个名称,因为java.io包中有一个名为Reader的类,使用已存在于Java包中的名称是不鼓励的:)


摆脱Exception并查看。 :) - An SO User
错误:未报告的异常InterruptedException;必须捕获或声明为抛出 - user2824983
是的,所以在调用run方法的地方,将其包围在try和catch中。 - An SO User
我很好奇...为什么我们不能抛出它呢?是因为当我们中断本地线程时,可能会损坏系统或其他原因吗? - user2824983
因为 run() 本身不会抛出任何异常。如果你声明它会抛出异常,那么就违反了方法签名。这就是问题的所在 :) - An SO User

1
Thread类内的run方法不是静态的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接