Page 242 - 6571
P. 242

ку  може  бути  змінений  в  процесі  його  виконання.  Метод  isD
                  emon() повертає true, якщо потік є демоном, і false, якщо це
                  звичайний потік.


                                         2.2 Порядок виконання роботи

                        1. Ознайомитися із теоретичними відомостями до лаборатор-

                           ної роботи.
                        2. Створити два потоки із різними іменами та різними пріори-
                           тетами.
                        3. У першому потоці реалізувати алгоритм підрахунку n чи-

                           сел Фібоначчі, а у другому – решето Ератосфена для знахо-
                           дження n простих чисел.
                        4. Зробити так, щоб після кожної операції знаходження ново-

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

                           кожного із потоків не демонів.
                        6. Зробити  так,  щоб  головний  потік  завжди  завершувався
                           останнім у програмі (окрім потоку-демона).

                        7. Після завершення усіх потоків (окрім потоку-демона) при-
                           спати головний потік на 5 секунд.
                        8. Доказати, що програма припиняє своє виконання незважа-
                           ючи на те, чи є завершеним потік-демон.

                        9. У звіті до лабораторної роботи представити знімки робочої
                           програми.
                        10. Оформити звіт та зробити висновки по роботі.


                                               2.3 Контрольні запитання

                        1. У яких станах можуть перебувати потоки у мові Java?
                        2. Яким чином можна дізнатися поточний стан потоку?

                        3. Яким чином можна призупинити виконання певного пото-
                  ку на вказаний проміжок часу?

                        4. У  якому  випадку  може  бути  згенерований  виняток  Inte
                  ruptException?
                        5. Чи  відрізняються  методи  interrupted()  та  isInter

                  upted()?
                        6. Яким чином зробити так, щоб певний потік гарантовано за-

                  вершав своє виконання останнім?

                                                             241
   237   238   239   240   241   242   243   244   245   246   247