Java中的多线程

Kra*_*ken 0 java multithreading

这是我的代码

public class ThreadLearn{
private static class Check implements Runnable{
    public void run(){

        System.out.printf("\nInCheck %s", Thread.currentThread().getName());
    }
}

public static void main(String[] args){

   Thread t;
   int i=0;
   while(i<2){
      t = new Thread(new GetData());
      t.start();
      System.out.printf("\n%s: ", t.getName());
      i++;
   }

}

}
Run Code Online (Sandbox Code Playgroud)

输出是:

InRun Thread-0
Thread-0:
Thread-1:
InRun Thread-1
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  1. 输出不应该是

    InRun Thread-0

    线程0:

    InRun Thread-1

    线程1:

  2. 一旦t.start()完成,它是否会等待run()执行然后创建第二个线程?如果我想做以下怎么办?

    而(必需)

    new Thread().start();

在我的run方法中,我可以拥有所有我希望线程并行完成的东西,这样它就不会等待一个线程完成run方法然后创建第二个线程.

谢谢

Jes*_*per 6

输出不应该......

不可以.线程彼此独立运行.JVM和操作系统决定何时运行哪个线程.通常,执行两个线程的顺序是不可预测的.当你再次运行程序时,结果可能会有所不同.

一旦t.start()完成,它是否会等待run()执行然后创建第二个线程?

不,它不会等待.run()新线程的方法可以立即或稍后启动,具体取决于线程的调度方式.