首页 > 解决方案 > 一旦子线程完成执行,它会继续执行主线程行吗?

问题描述

我正在尝试在主线程中创建一个子线程,如下所示,

public class test {
    public static void main(String[] args) throws InterruptedException {

        Thread t1 = new Thread(new Runnable() {

            @Override
            public void run() {
                System.out.println("In normal child thread " + Thread.currentThread().getName());

            }
        });
        t1.start();
        System.out.println("main thread sleeping for 5 seconds : " + Thread.currentThread().getName());
        Thread.sleep(5000);
        System.out.println("In main thread : " + Thread.currentThread().getName());
        System.out.println("exiting main thread : " + Thread.currentThread().getName());
    }

}

在上面的例子中,我让主线程休眠了 5 秒。因此,一旦子线程完成打印其 sysout 语句,我预计下面的行将被执行两次,

System.out.println("In main thread : " + Thread.currentThread().getName());
System.out.println("exiting main thread : " + Thread.currentThread().getName());

但是当我执行程序时,我只看到这些行执行一次。

如果我的期望是正确的,请更新我?. 我期望主线程应该两次执行这些 sysout 语句。

标签: javamultithreading

解决方案


这里我们运行两个线程:MainThread 和 Child 线程。当我们为子thread()调用start()方法时,run()方法中的逻辑就会被执行。该子线程将在其 run 方法执行时终止。主线程继续执行剩余的代码。


推荐阅读