Page 67 - 4657
P. 67

hi.stop();
            System.out.println(lo.click + " vs. " + hi.click);
            } }
                 За  значеннями,  що  фігурує  в  роздруківці,  можна  укласти,
            що  підпроцесу  з  низьким  пріоритетом  дістається  менше  на  25
            відсотків часу процесора:

            C:\>java HiLoPri
            304300 vs. 4066666


                  Синхронізація

                 Коли  двом  чи  більш  підпроцесам  потрібно  рівнобіжний
            доступ  до  тим  самим  даних  (інакше  кажучи,  до  спільно
            використовуваного  ресурсу),  потрібно  подбати  про  те,  щоб  у
            кожен конкретний момент часу доступ до цих даних надавався
            тільки одному з підпроцесів. Java для такої синхронізації надає
            унікальну, убудовану в мову програмування підтримку. В інших
            системах з рівнобіжними підпроцесами існує поняття монітора.
            Монітор - це об'єкт, використовуваний як засувка. Тільки один з
            підпроцесів  може  в  даний  момент  часу  володіти  монітором.
            Коли підпроцес одержує цю засувку, говорять, що він ввійшов у
            монітор. Всі інші підпроцеси, що намагаються ввійти в той же
            монітор,  будуть  заморожені  доти  поки  підпроцес-володар  не
            вийде з монітора.
                 У кожного Java-об'єкта є зв'язаний з ним неявний монітор, а
            для  того,  щоб  ввійти  в  нього,  треба  викликати  метод  цього
            об'єкта,  відзначений  ключовим  словом  synchronized.  Для  того,
            щоб вийти з монітора і тим самим передати керування об'єктом
            іншому  підпроцесу,  власник  монітора  повинний  усього  лише
            повернутися із синхронізованого методу.
            class Callme {
            void call(String msg) {
            System.out.println("[" + msg);
            try Thread.sleep(-1000) {}
            catch(Exception e) {}

                                                                             65
   62   63   64   65   66   67   68   69   70   71   72