Иллюстрированный самоучитель по 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
.