Page 259 - 6571
P. 259

Додаток 5



                                 ЛАБОРАТОРНА РОБОТА № 5

                  Додаткові способи синхронізації та створення

                                     пулу потоків у мові Java





                  Мета: Ознайомитися із додатковими методами не блокуючого
                            режиму синхронізованого доступу до спільних даних

                            та навчитися створювати пул потоків з метою ефекти-
                            вного керування множиною потоків у мові Java.


                                        5.1 Теоретичні відомості

                  Часто для захисту одного або двох полів класу від асинхрон-
            ного доступу потрібно синхронізувати доступ до усього об’єкта,

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

            volatile,  то  компілятор  і  віртуальна  машина  враховують  той
            факт,  що  значення  поля  може  бути  паралельно  модифіковане  в

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

                  1) змінна  завжди  зчитується  з  основної  пам’яті,  і  ніколи  не
            кешується в пам’ять потоку, а значить з будь-якого потоку зав-
            жди доступне її актуальне значення;

                  2) при  одночасних  запитах  на  читання  і  запис  від  декількох
            потоків, віртуальною машиною гарантується виконання спочатку
            запитів на запис;
                  3) віртуальною  машиною  гарантується  атомарність  операцій

            читання  /  запису,  проте  це  актуально  тільки  для  змінних  типу
            long  і  double,  для  інших  типів  даних  ці  дії  у  мові  Java  і  так

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

                                                        258
   254   255   256   257   258   259   260   261   262   263   264