Page 243 - 6253
        P. 243
     Java (JVM), якщо головний потік завершується до завершення дочірніх потоків, то у
            програмі  може  відбутися  збій.  Попередня  програма  гарантує,  що  головний  потік
            завершиться  останнім,  оскільки  головний  потік  «спить»  1000  мілісекунд  між
            ітераціями  циклу,  а  дочірній  потік  –  тільки  500  мілісекунд.  Це  змушує  дочірній
            потік завершитися швидше за головний.
                  Розширення  класу  Thread.  Ще  один  спосіб  створення  потоку  –  це  оголосити
            клас,  який  розширює  клас  Thread,  а  потім  створити  екземпляр  даного  класу.
            Дочірній  клас  зобов’язаний  перевизначити  метод  run(),  який  є  точкою  входу  для
            нового  потоку.  Він  також  повинен  викликати  метод  start()  для  запуску  виконання
            нового  потоку.  У  лістингу  10.3  наведено  приклад  попередньої  програми,
            переписаної з використанням розширення класу Thread.
                             Лістинг 10.3 – Створення потоку шляхом розширення класу Thread
                  class MyThread extends Thread {
                     // точка входу власного потоку
                     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) {
                        MyThread thread = new MyThread();
                        thread.setName("Демонстраційний потік");
                        System.out.println("Дочірній потік створено:" + thread);
                        // запуск потоку
                        thread.start();
                        try {
                           for (int i = 5; i > 0; i--) {
                                                              242
     	
