为什么我的输入显示一个线程在另一个线程之后执行,而不是同时?

com*_*der 3 java multithreading

我研究了一个线程的概念,并看到它是让代码同时在两个进程中运行.虽然是我的代码

public class Connor extends Thread{

    public void run() {
        for(int i=0; i< 10; i ++){
            System.out.println("Hello " + i);
    }

    public static void main(String[] args){
        Connor runner1 = new Connor();
        Connor runner2 = new Connor();
        runner1.start();
        runner2.start();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的输出是http://imgur.com/yAZqgal

看起来这两个线程确实同时启动(单独的进程,由两个前导0指示)但是一个执行(1-9)然后另一个执行(1-9).他们还假设交织(1,1,2,2,...)bc线程都打印到控制台.我研究并发现start是正确的方法,因为它告诉线程类在另一个线程中执行run方法?谁能解释为什么我得到这个输出?

Dav*_*rtz 5

假设你有十个差事你需要做,而你的姐姐有十个差事她需要做,而你只有一辆车.你是否在每次差事后将车开回来并切换司机?当然不是.这将是荒谬的低效率.每个线程基本上只需要输出流.所以将它们紧密交错是荒谬的.