Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java线程未执行_Java_Multithreading - Fatal编程技术网

Java线程未执行

Java线程未执行,java,multithreading,Java,Multithreading,我正在尝试用Java创建一个线程,它看起来可以工作(线程正在启动,如果我尝试在代码中写入一些随机想法,程序将在线程0中返回错误。但由于某些原因,线程中的代码没有执行。当我在开始时放置一个简单的system.out.printl时,它没有显示。我在搜索此问题时没有发现任何东西,因此希望您能帮助我。 主要内容: public class Main { public static void main(String[] args) throws java.io.IOException

我正在尝试用Java创建一个线程,它看起来可以工作(线程正在启动,如果我尝试在代码中写入一些随机想法,程序将在线程0中返回错误。但由于某些原因,线程中的代码没有执行。当我在开始时放置一个简单的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”


问候语

运行
不会引发异常,也不会获取参数

您必须覆盖好的一个:

public void run() {
}
@Override
public void run() {
}
您可以添加
@Override
注释,以确保覆盖好的注释:

public void run() {
}
@Override
public void run() {
}

run
不抛出异常,也不接受参数

您必须覆盖好的一个:

public void run() {
}
@Override
public void run() {
}
您可以添加
@Override
注释,以确保覆盖好的注释:

public void run() {
}
@Override
public void run() {
}

您没有正确重写run()方法。run的正确方法签名为:
public void run()
,不带参数。如果将SendMessages类更改为

public class SendMessages extends Thread {
    @Override
    public void run() {
        System.out.println("1");
    }   
}

您应该会看到打印的1。这就是@Override注释很有用的原因-它告诉您所编写的方法实际上没有重写任何内容。

您没有正确重写run()方法。正确的run方法签名是:
public void run()
,不带参数。如果将SendMessages类更改为

public class SendMessages extends Thread {
    @Override
    public void run() {
        System.out.println("1");
    }   
}

您应该看到打印的1。这就是@Override注释很有用的原因-它告诉您所编写的方法何时实际上没有重写任何内容。

run
不会引发异常,也不接受参数。您通常不想扩展
线程
。相反,实现
Runnable
并将其传递给线程构造函数。另外,代码中没有
while(true){}
。添加
Thread.sleep()
在内部,否则您将挂起cpu。
run
不会引发异常,也不会获取参数。您通常不想扩展
线程
。相反,实现
Runnable
并将其传递给线程构造函数。此外,代码中不包含
while(true){}
。添加
线程。sleep()
在内部,否则您将挂起cpu。是的,1+。要么这样,要么使用可调用的。在尝试重写方法时也始终使用
@Override
注释。谢谢。我需要一些例外,因为我不想让这里的代码太大。但是现在,我将其移动到另一个类中。@Jeyex如果你真的这样做的话。@Jeyex你需要抛出异常,你应该寻找可调用的,而不是可运行的。此外,你应该避免扩展线程,而是实现可运行的。是的,1+。要么这样做,要么使用可调用的。在试图重写方法时,也要始终使用
@Override
注释。谢谢。我需要异常来完成我为此取出的东西s、 因为我不想让这里的代码太大。但是现在,我将把它转移到另一个类中。@Jeyex如果你真的需要抛出异常,你应该寻找可调用的而不是可运行的。此外,你应该避免扩展线程,而是实现可运行的。