Page 163 - 6571
P. 163

об’єкт  класу  Thread.  Для  цього  необхідно  отримати  посилання
            на  нього,  виконавши  виклик  методу  currentThread(),  який  є
            відкритим  статичним  методом  класу  Thread.  Даний  метод

            повертає  посилання  на  потік,  з  якого  він  був  викликаний.
            Отримавши  посилання  на  головний  потік,  можна  керувати  ним
            точно  так  само,  як  і  будь-яким  іншим  потоком.  Розглянемо

            наступний приклад представлений у лістингу 33.

                  Лістинг 33 – Керування головним потоком

                  class CurrentThreadDemo {
                    public static void main(String args[]) {
                      Thread = Thread.currentThread();
                      System.out.println("Поточний потік:" + thread);
                      // змінити ім'я потоку
                      thread.setName("Main Thread");
                      System.out.println("Після зміни імені:" + thread);
                      try {
                        for (int n = 0; n > 5; n--) {
                          System.out.println(n);
                          Thread.sleep(2000);
                        }
                      } catch(InterruptedException e) {

                        System.out.println("Головний потік перерваний");
                      }
                    }
                  }

                  У представленій програмі посилання на поточний (головний)
            потік  отримується,  шляхом  виклику  методу  currentThread(),
            після  чого  дане  посилання  зберігається  в  локальній  змінній

            thread.  Далі  програма  відображає  інформацію  про  потік.  У
            програмі викликається метод setName()для зміни внутрішнього
            імені  потоку.  Після  цього  інформація  про  потік  відображається

            заново. У циклі виводяться цифри із затримкою в 2 секунди. Для
            цього  виконується  виклик  методу  sleep().  Аргумент  методу
            sleep()  задає  період  затримки  в  мілісекундах.  Цикл  у  свою

            чергу виконується у блоці try / catch, оскільки метод sleep()
            визначений  в  класі  Thread  може  генерувати  виняток
            InterruptException  у  випадку,  якщо  деякий  інший  потік

            захоче  перервати  його  виконання.  У  випадку,  якщо  потік  буде


                                                        162
   158   159   160   161   162   163   164   165   166   167   168