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