Page 165 - 6571
P. 165

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


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

            стані RUNNABLE під час виклику методу getState().

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

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

























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

                  Оскільки стан потоку може змінитися після виклику методу
            getState(), то в залежності від обставин, стан, отриманий при

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

            синхронізацією  потоків.  Він,  насамперед,  використовується  при
            налагодженні  або  для  профілювання  характеристик  потоку  під
            час виконання.






                                                        164
   160   161   162   163   164   165   166   167   168   169   170