我试图用Java创建一个线程,看起来它会起作用(线程正在启动,如果我尝试在代码中编写一些随机的思考,程序将在线程中返回错误-0。但由于某种原因,Thread中的代码没有执行。当我在开头放一个简单的system.out.printl时,它没有显示。当我没有找到任何东西时我没有找到任何东西寻找这个问题,所以我希望你能帮助我。
主要:
public class Main {
public static void main(String[] args) throws java.io.IOException{
SendMessages sm = new SendMessages();
sm.start();
System.out.println("2");
while(true){
}
}
}
主题:
public class SendMessages extends Thread {
public void run(String[] args) throws java.io.IOException {
System.out.println("1");
}
}
" 2"正在打印,但不是" 1"。
问候
答案 0 :(得分:3)
run
不会抛出异常,也不会参数。
你必须覆盖好的:
public void run() {
}
您可以添加@Override
注释,以确保覆盖好注释:
@Override
public void run() {
}
答案 1 :(得分:1)
您没有正确覆盖run()方法。运行的正确方法签名是:
public void run()
,没有参数。如果将SendMessages类更改为
public class SendMessages extends Thread {
@Override
public void run() {
System.out.println("1");
}
}
你应该看到1印刷。这就是为什么@Override注释很有用 - 它会告诉您何时编写的方法实际上没有覆盖任何内容。