Page 246 - 6253
        P. 246
     }catch (InterruptedException e) {
                        // потік перерваний під час очікування або призупинення
                     } finally {
                        виконати очистку, якщо потрібно;
                     }
                     // виходом з методу run() завершується виконання потоку
                  }
                  Перевірка  стану  переривання  потоку  викликом  методу  isInterrupted()  не  є
            обов’язковою  і  не  зручна,  оскільки  можна  виконати  виклик  методу  sleep()  (або
            інший  метод  переривання)  після  кожної  ітерації  циклу.  Якщо  метод  sleep()
            викликається,  коли  встановлено  стан  переривання,  то  потік  не  переходить  у  стан
            очікування.  Замість  цього  він  очищає  свій  стан  і  генерує  виняток  типу
            InterruptedException.  Таким  чином,  якщо  метод  sleep()  викликається  в  циклі,  то
            перевіряти  стан  переривання  не  має  необхідності.  Замість  цього  краще  виконати
            перехоплення  згенерованого  об’єкта  винятку  типу  InterruptedException,  як  це
            показано нижче.
                  public void run() {
                     try {
                        while (додаткові дії) {
                           виконати додаткові дії;
                           Thread.sleep(delay);
                        }
                     } catch(InterruptedException e) {
                        // потік перерваний під час очікування
                     } finally {
                        виконати очистку, якщо необхідно;
                     }
                     // виходом з методу run() завершується виконання потоку
                  }
                  Статичний  метод  interrupted()  перевіряє,  чи  був  перерваний  поточний  потік.
            Більше  того,  виклик  даного  методу  призводить  до  очищення  стану  переривання
            потоку. З іншого боку, метод isInterrupted() може бути використаний для перевірки
            того, чи був перерваний будь-який потік. Його виклик не призводить до зміни стану
            переривання.
                  Можна  знайти  велику  кількість  опублікованого  коду,  де  на  нижньому  рівні
                                                              245
     	
