Page 131 - 4868
P. 131

129                                                              Ошибка! Стиль не определен.

                                            Потік  в  даний  час  виконується  або  почне
                      RUNNABLE
                                            виконуватися, коли отримає доступ до процесора

                     TERMINATED             Потік закінчив виконання
                                            Потік  призупинив  виконання  на  певний  проміжок
                                            часу,  наприклад,  після  виклику  методу  sleep().
                   TIMED WAITING
                                            Потік  переходить  також  в  даний  стан  при  виклику
                                            методу wait() або join()
                                            Потік призупинив виконання, оскільки він очікує на
                       WAITING              певну  дію.  Наприклад,  виклик  методів  wait()  або

                                            join(), які виводять потік із стану очікування

                     Для  того  щоб  отримати  стан  потоку,  використовується  метод
               getState(), доступний із екземпляра класу Thread. Наприклад, наступний
               код визначає, чи знаходиться потік по імені thrd в стані RUNNABLE під час
               виклику методу getState().

                     Thread.State ts = thrd.getState();
                     if (ts == Thread.State.RUNNABLE)
                       // вивести інформацію про поточний стан;

                     Схема подана на рисунку 2.1 демонструє зв’язки між різними станами.





















                       Рисунок2.1 – Зв’язки між станами в яких може перебувати потік

                     Оскільки  стан  потоку  може  змінитися  після  виклику  методу
               getState(),  то  в  залежності  від  обставин,  стан,  отриманий  при  виклику
               методу  getState(),  за  короткий  проміжок  часу  (квант  часу)  може  не
               відображати  фактичний  стан  потоку.  З  цієї  та  інших  причин  метод
               getState()не  призначений  для  керування  синхронізацією  потоків.  Він,
               насамперед,  використовується  при  налагодженні  або  для  профілювання
               характеристик потоку під час виконання.

                     18.2. Створення власних потоків (клас Thread та інтерфейс Runnable)

                     Багатопотокова  модель  Java  побудована  на  основі  класу  Thread,  його
               методів  та  інтерфейсу  Runnable,  що  реалізує  клас  Thread.  Клас  Thread
               інкапсулює  в  собі  потік  виконання.  Оскільки,  не  можливо  напряму
   126   127   128   129   130   131   132   133   134   135   136