Заказ печати для объекта Runnable и Thread - PullRequest
0 голосов
/ 04 декабря 2018

Сначала выводится «основная нить», а затем выводится «дочерняя нить».Почему бы не "дочерняя нить" в первую очередь?Кто-нибудь может объяснить это?Спасибо.

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");
    }
}

1 Ответ

0 голосов
/ 04 декабря 2018

Позвольте мне объяснить ваш код.

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-потоках, пожалуйста, посетите здесь .

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