JavaRush/Курсы/Java Multithreading/ThreadGroup — группы потоков

ThreadGroup — группы потоков

Открыта
ThreadGroup — группы потоков - 1

— Привет, Амиго!

Начнем разбираться с нитями основательней.

Чтобы любая нить не могла останавливать и прерывать все нити подряд, было введено понятие «группы нитей». Нить может оказывать влияние только на другие нити, которые содержатся в той же группе, что и она. ThreadGroup – это класс, который управляет группами нитей. Такой подход позволяет защитить нити от нежелательного изменения.

Иногда приходится выполнять код, которому нельзя 100% доверять. Поэтому удобно поместить все его нити в отдельную группу и запретить им вмешиваться в работу основной группы нитей.

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

У класса ThreadGroup есть методы, которые позволяют получить список всех его нитей, а также влиять/изменять их. Когда мы создаем новую нить, и явно не указываем группу, она присоединяется к той же группе, что и нить-создатель.

Вот тебе несколько методов класса ThreadGroup:

Метод Описание
String getName()
Возвращает имя группы
ThreadGroup getParent()
Возвращает группу-родителя
void interrupt()
Прерывает все нити в группе.
boolean isDaemon()
Проверяет, является ли группа демоном
void setDaemon(boolean daemon)
Устанавливает группе свойство daemon
int activeCount()
Возвращает количество живых нитей в группе и ее подгруппах
int activeGroupCount()
Возвращает количество живых групп в группе и ее подгруппах
int enumerate(Thread[] list)
Помещает в массив все живые нити и возвращает их количество.
int getMaxPriority()
Возвращает максимальный приоритет для нитей в группе.
void setMaxPriority(int priority)
Позволяет задать максимальный приоритет нитей в группе и подгруппах.
Комментарии (45)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
8 августа 2025, 13:38
Всегда ругал тех, кто нелестно отзывается о курсе, мол ничего не понятно, мало информации. Думал, что блииин, в этом же вся и суть искать информацию самостоятельно. В этом весь кайф и задумка автора. Но.. Когда ты решаешь задачу про архиватор, для которой пришлось перелопатить кучу сайтов и задрочить вопросами чат GPT, а потом тебе суют лекции про.. Про ENUM, не рассказывая о его последних изменениях блин и про ThreadGroup, который уже считается устаревшим, начинаешь задумываться. А как хорошо было бы, если бы я изучал теорию о работе с файлами и папками, об устройстве zip файлов, о том, как их правильно читать и записывать, а потом бы мне дали эту крутую задачу, во время решения которой я постоянно бы возвращался к лекциям. Сейчас всё прохождение курса свелось к однодневному изучению материала уровня и двух-трехдневному серфингу интернета для решения задачи от боброва, к которой ты всегда оказываешься не готов. Надеюсь в следующем разделе всё будет по-другому. В конце концов, всегда себя утешаю, это курс благодаря которому я хоть что-то понимаю в программировании и который меня многому научил, мне обошёлся в каких-то 6-7 тысяч рублей. А те курсы о которых все говорят и от которых "так отстаёт JavaRush" стоят все 100-200к. Так что грудь вперед, утереть сопли и двигаться дальше. Задачи тут на высоком уровне и никто за тебя их в реальной жизни не решит. Всё будет именно так же как и на JavaRush. Ты никогда не будешь готов к крупной задаче от Боброва и придётся выкручиваться, просить помощи, искать в интернете. JavaRush учит жизни. И я скажу то, что для тебя не новость: мир не такой уж солнечный и приветливый. Это очень опасное, жесткое место... Ну вы поняли. *ух и понесло меня
Anemon
Уровень 13
Expert
13 января 2025, 10:41
Какая щутка)0
Gans Electro
Уровень 50
9 сентября 2023, 16:17
Полезно будет запомнить
Thread.currentThread().getThreadGroup().getName()
Igoreek
Уровень 43
18 сентября 2024, 13:20
в чем польза?
Илюха Будущий ЮниорJava - стажёр в ASTON
1 октября 2024, 12:11
в молоке
6 июня 2023, 18:00
В современном программировании на Java, использование ThreadGroup не является обязательным или рекомендованным. Обычно более гибкий и предпочтительный подход заключается в использовании класса ExecutorService и ThreadPoolExecutor из пакета java.util.concurrent, которые предоставляют более современные и эффективные средства для управления пулом потоков. Но отмечу, что всё вышесказанное не говорит о том, что - быть знакомым и уметь работать с классом ThreadGroup это зашквар....
Rolik
Уровень 41
24 апреля 2023, 14:55
Группы потоков лучше всего рассматривать как неудачный эксперимент. Просто не обращайте внимания на их существование. Эккель "Философия Java".
Anemon
Уровень 13
Expert
13 января 2025, 10:43
А почему так?
Андрей
Уровень 42
14 апреля 2023, 14:20
феерично, дальше!
FutureDevJava Student в Home Corporation ®
9 марта 2023, 15:35
Java Multithreading 8 уровень, 3 лекция Начнем разбираться с нитями основательней. Ну... давайте начнем)))
TemaCode
Уровень 51
11 декабря 2022, 08:15
Вот Вам человеческий пример, а то в материалах пусто-) текущий ThreadGroup и Parent :
Thread currentThread = Thread.currentThread();
ThreadGroup threadGroup = currentThread.getThreadGroup();
System.out.println("Thread: " + currentThread.getName());
System.out.println("Thread Group: " + threadGroup.getName());
System.out.println("Parent Group: " + threadGroup.getParent().getName());
Buenos
Уровень 49
29 июля 2022, 05:47
Кусочек текста вроде небольшой, вроде и тема не нова. Прочитал несколько раз - ничего не понял!
Mike-L
Уровень 43
16 июня 2021, 03:13
О! Так это Байден скоро так будет #прям картинка в тему