Page 186 - 6571
P. 186

4. З якою метою проводиться зміна пріоритету потоку?
                        5. Як встановити пріоритет потоку засобами мови Java?
                        6. Скільки рівнів пріоритетів потоку визначено у мові Java?
                        7. Який  рівень  пріоритету  мають  потоки  у  мові  Java  по

                  замовчуванню?
                        8. Якими властивостями володіє монітор у термінології мови
                  Java?

                        9. Які  у  мові  Java  використовуються  механізми  захисту
                  критичної секції коду від паралельного доступу?
                        10. Який вид блокування називається реентерабельним?



                                                       ЛЕКЦІЯ 20

                           ВБУДОВАНІ МЕТОДИ СИНХРОНІЗАЦІЇ ПОТОКІВ



                        20.1 Використання ключового словаsynchronized


                        Інтерфейси Lock та Condition надають розробникам високу

                  ступінь  контролю  над  блокуваннями.  Але  найчастіше  такий
                  контроль  є  зайвим,  і  зазвичай  буває  достатньо  механізму
                  синхронізації, вбудованого в мову Java.
                        Процес синхронізації в мові Java є досить простим, оскільки

                  усі об’єкти володіють власними, асоційованими з ними неявними
                  моніторами.  Щоб  увійти  в  монітор  об’єкта,  необхідно  просто
                  викликати           метод,        модифікований              ключовим            словом
                  synchronized.               Коли         потік         знаходиться           всередині

                  синхронізованого  методу,  то  всі  інші  потоки,  які  намагаються
                  його викликати з того ж екземпляру класу переводяться в режим
                  очікування. Щоб вийти з монітора і передати керування об’єктом
                  іншому  заблокованому  потоку,  «власник»  монітора  просто

                  повертає керування із синхронізованого методу.
                        Якщо метод оголошений з ключовим словом synchronized,
                  то блокування об’єкта захищає весь метод. Отже, щоб викликати
                  метод  позначений  ключовим  словом  synchronized,  потік

                  повинен  захопити  вбудоване  блокування  об’єкта.  Іншими
                  словами, наступний фрагмент коду:

                        public synchronized void method() {
                          тіло методу;
                        }


                                                             185
   181   182   183   184   185   186   187   188   189   190   191