Java线程未执行
我正在尝试用Java创建一个线程,它看起来可以工作(线程正在启动,如果我尝试在代码中写入一些随机想法,程序将在线程0中返回错误。但由于某些原因,线程中的代码没有执行。当我在开始时放置一个简单的system.out.printl时,它没有显示。我在搜索此问题时没有发现任何东西,因此希望您能帮助我。 主要内容:Java线程未执行,java,multithreading,Java,Multithreading,我正在尝试用Java创建一个线程,它看起来可以工作(线程正在启动,如果我尝试在代码中写入一些随机想法,程序将在线程0中返回错误。但由于某些原因,线程中的代码没有执行。当我在开始时放置一个简单的system.out.printl时,它没有显示。我在搜索此问题时没有发现任何东西,因此希望您能帮助我。 主要内容: public class Main { public static void main(String[] args) throws java.io.IOException
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如果你真的需要抛出异常,你应该寻找可调用的而不是可运行的。此外,你应该避免扩展线程,而是实现可运行的。