![ThreadGroup — группы потоков - 1](https://cdn.javarush.com/images/article/f8c9fd25-5de2-4f0e-8017-4de56297961f/original.jpeg)
— Привет, Амиго!
Начнем разбираться с нитями основательней.
Чтобы любая нить не могла останавливать и прерывать все нити подряд, было введено понятие «группы нитей». Нить может оказывать влияние только на другие нити, которые содержатся в той же группе, что и она. ThreadGroup – это класс, который управляет группами нитей. Такой подход позволяет защитить нити от нежелательного изменения.
Иногда приходится выполнять код, которому нельзя 100% доверять. Поэтому удобно поместить все его нити в отдельную группу и запретить им вмешиваться в работу основной группы нитей.
Группа нитей может содержать другие группы. Это позволяет организовать все нити и группы в иерархическое дерево. В таком дереве каждая группа нитей, за исключением начальной, имеет свою группу-родителя.
У класса ThreadGroup есть методы, которые позволяют получить список всех его нитей, а также влиять/изменять их. Когда мы создаем новую нить, и явно не указываем группу, она присоединяется к той же группе, что и нить-создатель.
Вот тебе несколько методов класса ThreadGroup:
Метод | Описание |
---|---|
|
Возвращает имя группы |
|
Возвращает группу-родителя |
|
Прерывает все нити в группе. |
|
Проверяет, является ли группа демоном |
|
Устанавливает группе свойство daemon |
|
Возвращает количество живых нитей в группе и ее подгруппах |
|
Возвращает количество живых групп в группе и ее подгруппах |
|
Помещает в массив все живые нити и возвращает их количество. |
|
Возвращает максимальный приоритет для нитей в группе. |
|
Позволяет задать максимальный приоритет нитей в группе и подгруппах. |