Page 167 - 6571
P. 167
Розглянемо приклад, що створює новий потік і запускає його
на виконання (лістинг 34).
В результаті виклику методу start(), відбувається запуск
потоку. Метод run() запускає цикл for дочірнього потоку.
Після виклику методу start() конструктор MyThread()
повертає керування методу main(). Коли головний потік
продовжує свою роботу, він входить у власний цикл for. Після
цього обидва потоки виконуються паралельно, спільно
використовуючи ресурси процесора, аж до завершення своїх
циклів.
Лістинг 34 – Створення власного потоку шляхом
імплементації інтерфейсу Runnable
class MyThread implements Runnable {
// точка входу власного потоку
public void run() {
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("Дочірній потік створено:" + t
read);
// запуск потоку
thread.start();
try {
for (int i = 5; i > 0; i--) {
System.out.println("Головний потік: " + i);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
166