Иллюстрированный самоучитель по Java

         

Приоритеты подпроцессов


Планировщик подпроцессов виртуальной машины Java назначает каждому подпроцессу одинаковое время выполнения процессором, переключаясь с подпроцесса на подпроцесс по истечении этого времени. Иногда необходимо выделить какому-то подпроцессу больше или меньше времени по сравнению с другим подпроцессом. В таком случае можно задать подпроцессу больший или меньший приоритет.

В классе Thread есть три целые статические константы, задающие приоритеты:

NORM_PRIORITY

— обычный приоритет, который получает каждый подпроцесс при запуске, его числовое значение 5;

MIN_PRIORITY

— наименьший приоритет, его значение 1; 

MAX_PRIORITY

— наивысший приоритет, его значение 10.

Кроме этих значений можно задать любое промежуточное значение от 1 до 10, но надо помнить о том, что процессор будет переключаться между подпроцессами с одинаковым высшим приоритетом, а подпроцессы с меньшим приоритетом не станут выполняться, если только не приостановлены все подпроцессы с высшим приоритетом. Поэтому для повышения общей производительности следует приостанавливать время от времени методом sleep о подпроцессы с высоким приоритетом.

Установить тот или иной приоритет можно в любое время методом setPriorityfint newPriority), если подпроцесс имеет право изменить свой приоритет. Проверить наличие такого права можно методом checkAtcess(). Этот метод выбрасывает исключение класса Security&xception, если подпроцесс не может изменить свой приоритет.

Порожденные подпроцессы будут иметь тот же приоритет, что и подпроцесс-родитель.

Итак, подпроцессы, как правило, должны работать с приоритетом

NORM_PRIORITY

. Подпроцессы, большую часть времени ожидающие наступления какого-нибудь события, например, нажатия пользователем кнопки Выход, могут получить более высокий приоритет

MAX_PRIORITY

. Подпроцессы, выполняющие длительную работу, например, установку сетевого соединения или отрисовку изображения в памяти при двойной буферизации, могут работать с низшим приоритетом

MIN_PRIORITY

.



Содержание раздела