gpt4 book ai didi

java - 线程Java代码问题

转载 作者:行者123 更新时间:2023-11-29 06:38:42 25 4
gpt4 key购买 nike

我是这里的初学者,开始学习java编程。

我写了一个程序来尝试线程化。在一个类中,我编写了一个程序来显示从 1 到 100 的数字,在另一个类中,我编写了一个程序来显示从 999 到 100 的数字。现在主要是我为类 (r1,r2)) 创建了一个对象引用并创建了一个线程的对象并将它们作为参数传递(r1,r2-我类的对象引用)。现在我得到的输出在某种程度上不像预期的那样我觉得我的第二个线程没有被执行。我不确定我的逻辑或程序是否有问题。任何帮助/建议将不胜感激。下面是我的代码供引用。

第 1 类:

public class Run implements Runnable {

@Override
public void run() {

for (int i = 0; i < 100; i++) {
try {

Thread.sleep(200);
} catch (InterruptedException ex) {
Logger.getLogger(Run.class.getName()).log(Level.SEVERE, "...", ex);
}
System.out.println(i);
}
}
}

第 2 类: 公共(public)类 Run2 扩展线程 {

public void run2() {

for(int i=999;i>0;i--){
try {

Thread.sleep(500);
} catch (InterruptedException ex) {
Logger.getLogger(Run2.class.getName()).log(Level.SEVERE, "....", ex);
}
System.out.println(i);


}

}
}

主类:

public class Threading {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {

Run r= new Run();
Thread t1=new Thread(r);
t1.start();

Run2 r2=new Run2();
Thread t2=new Thread(r2);

t2.start();


}

}

最佳答案

将 Run2 的方法 run2 重命名为 run。你是线程的子类,所以你得到一个不做任何事情的 run 方法(实际上它检查它是否在目标 runnable 中传递,在这种情况下它调用在目标上运行,但由于目标为 null 它什么都不做),这就是正在运行的。

养成实现 Runnable 而不是扩展 Thread 的习惯,并使用 @Override 注释来捕获您认为自己正在覆盖某些东西但实际上没有覆盖的错误。

关于java - 线程Java代码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15956422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com