Когда дочерний поток завершит свое выполнение, возобновит ли он выполнение строк основного потока? - PullRequest
0 голосов
/ 30 мая 2020

Я пытаюсь создать дочерний поток в основном потоке, как показано ниже,

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 дважды.

1 Ответ

0 голосов
/ 30 мая 2020

Здесь мы запускаем два потока: основной поток и дочерний поток. Когда мы вызываем метод start () для дочернего потока (), выполняется logi c в методе run (). Этот дочерний поток будет d ie при выполнении его метода запуска. Основной поток продолжает выполнение оставшегося кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...