Page 242 - 6253
P. 242
try {
for (int i = 5; i > 0; i--) {
System.out.println("Дочірній потік:" + i);
Thread.sleep(500);
}
} catch (InterruptedException e) {
System.out.println("Дочірній потік перерваний");
}
System.out.println("Дочірній потік завершений");
}
}
public class Main {
public static void main(String[] args) {
Thread = new Thread(new MyThread(),
"Демонстраційний потік");
System.out.println("Дочірній потік створено:" + thread);
// запуск потоку
thread.start();
try {
for (int i = 5; i > 0; i--) {
System.out.println("Головний потік: " + i);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
System.out.println("Головний потік перерваний");
System.out.println("Головний потік завершений");
}
}
}
В результаті виклику методу start(), відбувається запуск потоку. Метод run()
запускає цикл for дочірнього потоку. Після виклику методу start() конструктор
MyThread() повертає керування методу main(). Коли головний потік продовжує свою
роботу, він входить у власний цикл for. Після цього обидва потоки виконуються
паралельно, спільно використовуючи ресурси процесора, аж до завершення своїх
циклів.
Як уже згадувалося раніше, в багатопотоковій програмі головний потік часто
повинен завершувати виконання останнім. У деяких старих віртуальних машинах
241