【问题标题】:Print Order for Runnable and Thread objectRunnable 和 Thread 对象的打印顺序
【发布时间】:2018-12-03 21:26:58
【问题描述】:

先打印出“主线程”,再打印出“子线程”。为什么不先“子线程”?谁能解释一下?谢谢。

public static void main(String[] args) {
    Thread t = new Thread(new Runnable() {
        public void run() {
            for (int i = 0; i < 10; i++) {
                System.out.println("child thread");
            }
        }
    });

    t.start();

    for (int i = 0; i < 10; i++) {
        System.out.println("main thread");
    }
}

【问题讨论】:

  • 我的意思是,这就是并发的字面意思。不保证调用顺序
  • 它是否在 10 个“子线程”之前打印出所有 10 个“主线程”?它不应该。它应该以不确定的顺序将它们交错。

标签: java multithreading runnable


【解决方案1】:

让我解释一下你的代码。

Thread t = new Thread(new Runnable() {
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println("child thread");
        }
    }
});

在这一部分中,您将定义一个线程。这只是一个定义,在t.start() 之前不会发生任何事情。当您的程序到达t.start() 时,另一个线程将运行并且您的应用程序的主线程将继续。可能在线程启动之前,您的主线程将打印多个“主线程”,当您的线程到达System.out.println("child thread"); 时,您将看到两种打印的混合。有关 java 线程的更多信息,请访问here

【讨论】:

    猜你喜欢
    • 2021-07-23
    • 2011-01-19
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多