Каким будет результат компиляции и запуска следующей программы?

public class SleepMain {
    public static void main(String... args) {
        Thread t = new MyThread();
        for (int i = 1; i <= 5; i++) {
            System.out.print(i + " ");
            try {
                t.sleep(1000);
            } catch (InterruptedException e) {
                System.out.println("Interrupted in main");
            }
        }
    }

    static class MyThread extends Thread {
        public void run() {
            for (int i = 1; i <= 5; i++) {
                System.out.print(i + " ");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    System.out.println("Interrupted in myThread");
                }
            }
        }
    }
}
Explanation
Для запуска второго потока надо было вызвать метод t.start(). Без этого работает только исходный поток.
Метод sleep() класса Thread статический, потому по команде t.sleep() будет засыпать текущий поток, т.е. main.

Следи за CodeGalaxy

Мобильное приложение Beta

Get it on Google Play
Обратная Связь
Продолжайте изучать
тесты по Java
Cosmo
Зарегистрируйся сейчас
или Подпишись на будущие тесты