Java 我先调用start,然后调用run,但输出就像运行两个不同的线程

Java 我先调用start,然后调用run,但输出就像运行两个不同的线程,java,multithreading,Java,Multithreading,我先呼叫start,然后再呼叫run。当我先运行run()然后运行start()时,run将被视为一个方法并完全运行,然后调用start,但这样我的输出是: 0线程-1 0线程-0 1线程-1 1线程-0 2Thread-0 2读-1 3线程-1 3线程-0 4线程-1 4Thread-0 为什么,一旦运行被调用,它不完全运行吗 public class basic extends Thread { public void run (){ for(int i = 0; i <

我先呼叫
start
,然后再呼叫
run
。当我先运行
run()
然后运行
start()
时,
run
将被视为一个方法并完全运行,然后调用
start
,但这样我的输出是:

0线程-1
0线程-0
1线程-1
1线程-0
2Thread-0
2读-1
3线程-1
3线程-0
4线程-1
4Thread-0

为什么,一旦运行被调用,它不完全运行吗

public class basic extends Thread {
  public void run (){
    for(int i = 0; i < 5; i++) {
      try {
        Thread.sleep(100);
        System.out.println(i+ this.getName());
      } catch (InterruptedException e) {
        System.out.println(e);
      }
    }
  }

  public static void main(String[] args) {
    basic x= new basic();
    basic y=new basic();
    x.start();
    y.run();
  }
}
公共类基本扩展线程{
公开作废运行(){
对于(int i=0;i<5;i++){
试一试{
睡眠(100);
System.out.println(i+this.getName());
}捕捉(中断异常e){
系统输出打印ln(e);
}
}
}
公共静态void main(字符串[]args){
basic x=新的basic();
基本y=新的基本();
x、 start();
y、 run();
}
}
线程。start()是启动线程的正确方法

x.start();
y.start();
将启动2个新线程

x.run();
y.run();
将只在实际主线程下的线程内执行代码。 这是一个常见的错误


嗯,我不喜欢执行两个不同的线程。这是两个不同的线程正在执行。当前线程执行run()方法,启动线程也在不同的线程中并发执行。这有什么奇怪的?我用camelCase,用小写字母表示一个单词,谢谢。我的问题有点不同。对不起。这对你有用吗?你了解跑步和开始的区别吗?如果你想看免费教程,你可以看清楚。它已经完成了,从0到4,没有?