Философия Java


Управление группами процессов - часть 3


У всех программ есть как минимум один запущенный процесс и первое действие в main() является вызовом static метода для Thread называемого currentThread(). Из этого процесса создается группа процессов и вызывается list() для отображения следующего результата:

(1) ThreadGroup[name=system,maxpri=10]       Thread[main,5,system]

Можно видеть, что имя основной группы system, а имя основного процесса main и он принадлежит группе процессов system.

Второй пример (exercise) показывает, что максимальный приоритет группы system может быть уменьшен, а процесс main может увеличить свой приоритет:

(2) ThreadGroup[name=system,maxpri=9]       Thread[main,6,system]

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

(3) ThreadGroup[name=g1,maxpri=9]       Thread[A,9,g1]

Таким образом, не возможно установить более высокое максимальное значение приоритета группы чем у ее предка.

Четвертый пример уменьшает максимальное значение приоритета для g1, а затем пытается вернуть его обратно к Thread.MAX_PRIORITY. Результат следующий:

(4) ThreadGroup[name=g1,maxpri=8]       Thread[A,9,g1]

Можно видеть, что обратное увеличение до максимального приоритета не работает. Можно только уменьшить максимальное значение приоритета группы, но не увеличить его. Также обратите внимание, что приоритет процесса A не изменился и стал больше чем значение максимального приоритета для группы.

В пятом пример делается попытка установить у нового процесса максимальное значение приоритета:

(5) ThreadGroup[name=g1,maxpri=8]       Thread[A,9,g1]       Thread[B,8,g1]




Начало  Назад  Вперед