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
   237   238   239   240   241   242   243   244   245   246   247