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

标签 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();
    }
}

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

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

最佳答案

假设您有 10 件差事需要完成,您姐姐有 10 件她需要做的差事,而您只有一辆车。您是否在每次出差后把车开回来并更换司机?当然不是。那将是荒谬的低效。每个线程基本上只需要输出流。因此,将它们紧密交错是荒谬的。

关于java - 为什么我的输入显示一个线程在另一个线程之后执行,而不是同时执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24348745/

相关文章:

c# - 信号量和 Web 套接字

java - Android TabWidget 空白问题

Java:线程等待对象时是否释放所有监视器?

java - mongo Java 通过数组搜索

java - 如何在 intellij 14.1.4 中构建可运行的 jar 文件

C linux sem_wait 在线程中(有时)不起作用

java - Android,从网络获取数据并更新 UI(多线程和 MVC 设计模式)

c++ - 安全终止 Meyers Singleton 中的线程

java - 无状态 session bean 的 ejb 拦截器,如何调用有状态 session bean

java - 为什么我在这里收到微调器的空引用错误?