Page 240 - 6253
P. 240

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

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


                  Для  того  щоб  отримати  стан  потоку,  використовується  метод  getState(),

            доступний  із  екземпляра  класу  Thread.  Наприклад,  наступний  код  визначає,  чи

            знаходиться  потік  по  імені  thrd  в  стані  RUNNABLE  під  час  виклику  методу

            getState().

                  Thread.State ts = thrd.getState();

                  if (ts == Thread.State.RUNNABLE)
                     // вивести інформацію про поточний стан;
                  Схема подана на рисунку 10.1 демонструє зв’язки між різними станами.























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


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

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

            проміжок часу (квант часу) може не відображати фактичний стан потоку. З цієї та

            інших  причин  метод  getState()не  призначений  для  керування  синхронізацією

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

            характеристик потоку під час виконання.



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


                  Багатопотокова модель Java побудована на основі класу Thread, його методів та

            інтерфейсу Runnable, що реалізує клас Thread. Клас Thread інкапсулює в собі потік





                                                              239
   235   236   237   238   239   240   241   242   243   244   245