Класс ThreadGroup
- Все реализуемые интерфейсы:
Thread.UncaughtExceptionHandler
public class ThreadGroup extends Object implements Thread.UncaughtExceptionHandler
Группа потоков имеет имя и максимальный приоритет. Имя задается при создании группы и не может быть изменено. Максимальный приоритет группы является максимальным приоритетом для потоков, созданных в этой группе. Изначально он наследуется от родительской группы потоков, но может быть изменен с помощью метода setMaxPriority.
Группа потоков слабо достижима из родительской группы, поэтому может быть удалена сборщиком мусора, если в группе нет работающих потоков и сама группа потоков в остальном недостижима.
Если не указано иное, передача аргумента null конструктору или методу этого класса приводит к выбрасыванию NullPointerException.
Группы потоков и виртуальные потоки
Среда выполнения Java создает специальную группу потоков для виртуальных потоков. Эта группа возвращается методомThread.getThreadGroup при вызове для виртуального потока. Эта группа потоков отличается от других тем, что ее максимальный приоритет фиксирован и не может быть изменен методом setMaxPriority. Виртуальные потоки не учитываются при вычислении количества потоков, возвращаемого методом activeCount, не перечисляются методом enumerate и не прерываются методом interrupt.- Примечание к API:
- В ранних выпусках Java группы потоков предоставляли способ объединять потоки и обеспечивали для них некоторую форму управления заданиями. Группы потоков поддерживали изоляцию апплетов и предоставляли методы, предназначенные для диагностики. Новым приложениям редко требуется создавать объекты ThreadGroup и взаимодействовать с этим API.
- С момента появления:
- 1.0
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
ThreadGroup |
Создает новую группу потоков. |
ThreadGroup |
Создает новую группу потоков. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
int |
activeCount() |
Возвращает оценку количества работающих платформенных потоков в этой группе потоков и ее подгруппах. |
int |
activeGroupCount() |
Возвращает оценку количества групп в этой группе потоков и ее подгруппах. |
final void |
checkAccess() |
Устарел, планируется удаление: этот элемент API может быть удален в будущей версии. Изначально этот метод определял, имеет ли выполняющийся в данный момент поток разрешение на изменение этой группы потоков. |
final void |
destroy() |
Устарел, планируется удаление: этот элемент API может быть удален в будущей версии. Изначально этот метод предназначался для уничтожения пустой группы потоков. |
int |
enumerate |
Копирует в указанный массив все работающие платформенные потоки из этой группы потоков и ее подгрупп. |
int |
enumerate |
Копирует в указанный массив все работающие платформенные потоки из этой группы потоков. |
int |
enumerate |
Копирует в указанный массив ссылки на все подгруппы этой группы потоков и ее подгрупп. |
int |
enumerate |
Копирует в указанный массив ссылки на все подгруппы этой группы потоков. |
final int |
getMaxPriority() |
Возвращает максимальный приоритет этой группы потоков. |
final String |
getName() |
Возвращает имя этой группы потоков. |
final ThreadGroup |
getParent() |
Возвращает родительскую группу этой группы потоков. |
final void |
interrupt() |
Прерывает все работающие платформенные потоки в этой группе потоков и ее подгруппах. |
final boolean |
isDaemon() |
Устарел, планируется удаление: этот элемент API может быть удален в будущей версии. Изначально этот метод сообщал, является ли группа потоков группой потоков-демонов, которая автоматически уничтожается после завершения последнего потока. |
boolean |
isDestroyed() |
Устарел, планируется удаление: этот элемент API может быть удален в будущей версии. Изначально этот метод сообщал, была ли группа потоков уничтожена. |
void |
list() |
Выводит сведения об этой группе потоков в стандартный поток вывода. |
final boolean |
parentOf |
Проверяет, является ли эта группа потоков аргументом-группой или одной из ее предковых групп. |
final void |
setDaemon |
Устарел, планируется удаление: этот элемент API может быть удален в будущей версии. Изначально этот метод задавал, является ли группа потоков группой потоков-демонов, которая автоматически уничтожается после завершения последнего потока. |
final void |
setMaxPriority |
Задает максимальный приоритет группы. |
String |
toString() |
Возвращает строковое представление этой группы потоков. |
void |
uncaughtException |
Вызывается виртуальной машиной Java, когда поток в этой группе потоков завершается из-за неперехваченного исключения и для потока не установлен специальный Thread.UncaughtExceptionHandler. |
Подробное описание конструкторов
ThreadGroup
public ThreadGroup(String name)
- Параметры:
-
name— имя новой группы потоков, может бытьnull
ThreadGroup
public ThreadGroup(ThreadGroup parent, String name)
- Параметры:
-
parent— родительская группа потоков. -
name— имя новой группы потоков, может бытьnull
Подробное описание методов
getName
public final String getName()
- Возвращает:
- имя этой группы потоков; может быть
null
getParent
public final ThreadGroup getParent()
- Возвращает:
- родительскую группу этой группы потоков. Группа потоков верхнего уровня — единственная группа потоков, родителем которой является
null.
getMaxPriority
public final int getMaxPriority()
- Возвращает:
- максимальный приоритет для новых потоков, создаваемых в группе потоков
- См. также:
isDaemon
@Deprecated(since="16", forRemoval=true) public final boolean isDaemon()
- Возвращает:
- статус демона этой группы потоков
isDestroyed
@Deprecated(since="16", forRemoval=true) public boolean isDestroyed()
- Возвращает:
- false
- С момента появления:
- 1.1
setDaemon
@Deprecated(since="16", forRemoval=true) public final void setDaemon(boolean daemon)
- Параметры:
-
daemon— статус демона
setMaxPriority
public final void setMaxPriority(int pri)
Если аргумент pri меньше Thread.MIN_PRIORITY или больше Thread.MAX_PRIORITY, максимальный приоритет группы остается неизменным.
В противном случае приоритет этого объекта ThreadGroup устанавливается равным меньшему из указанного значения pri и максимального допустимого приоритета родительской группы этой группы потоков. (Если эта группа потоков является системной группой потоков, у которой нет родителя, ее максимальный приоритет просто устанавливается равным pri.) Затем этот метод рекурсивно вызывается для каждой группы потоков, принадлежащей этой группе, с аргументом pri.
- Параметры:
-
pri— новый приоритет группы потоков. - См. также:
parentOf
public final boolean parentOf(ThreadGroup g)
- Параметры:
-
g— группа потоков; может бытьnull - Возвращает:
-
true, если эта группа потоков является аргументом-группой или одной из ее предковых групп; в противном случае —false.
checkAccess
@Deprecated(since="17", forRemoval=true) public final void checkAccess()
activeCount
public int activeCount()
Возвращаемое значение является лишь оценкой, поскольку количество потоков может динамически изменяться во время обхода внутренних структур данных этим методом, а также на результат может повлиять наличие определенных системных потоков. Этот метод предназначен главным образом для отладки и мониторинга.
- Возвращает:
- оценку количества работающих потоков в этой группе потоков и любой другой группе потоков, для которой эта группа потоков является предком
enumerate
public int enumerate(Thread[] list)
Вызов этого метода действует точно так же, как вызов
enumerate(list, true)
- Параметры:
-
list— массив, в который помещается список потоков - Возвращает:
- количество потоков, помещенных в массив
enumerate
public int enumerate(Thread[] list, boolean recurse)
recurse имеет значение true, этот метод рекурсивно перечисляет все подгруппы этой группы потоков и включает ссылки на все работающие платформенные потоки в этих подгруппах. Если массив слишком мал для размещения всех потоков, дополнительные потоки молча игнорируются. Приложение может использовать метод activeCount, чтобы оценить необходимый размер массива, однако если массив слишком мал для размещения всех потоков, дополнительные потоки молча игнорируются. Если необходимо получить каждый работающий поток в этой группе потоков, вызывающая сторона должна проверить, что возвращенное значение int строго меньше длины list.
Из-за присущего этому методу состояния гонки рекомендуется использовать его только для отладки и мониторинга.
- Параметры:
-
list— массив, в который помещается список потоков -
recurse— еслиtrue, рекурсивно перечисляет все подгруппы этой группы потоков - Возвращает:
- количество потоков, помещенных в массив
activeGroupCount
public int activeGroupCount()
Возвращаемое значение является лишь оценкой, поскольку количество групп потоков может динамически изменяться во время обхода внутренних структур данных этим методом. Этот метод предназначен главным образом для отладки и мониторинга.
- Возвращает:
- количество групп потоков, для которых эта группа потоков является предком
enumerate
public int enumerate(ThreadGroup[] list)
Вызов этого метода действует точно так же, как вызов
enumerate(list, true)
- Параметры:
-
list— массив, в который помещается список групп потоков - Возвращает:
- количество групп потоков, помещенных в массив
enumerate
public int enumerate(ThreadGroup[] list, boolean recurse)
recurse имеет значение true, этот метод рекурсивно перечисляет все подгруппы этой группы потоков и включает ссылки на все группы потоков в этих подгруппах. Приложение может использовать метод activeGroupCount, чтобы оценить необходимый размер массива, однако если массив слишком мал для размещения всех групп потоков, дополнительные группы потоков молча игнорируются. Если необходимо получить все подгруппы этой группы потоков, вызывающая сторона должна проверить, что возвращенное значение int строго меньше длины list.
Из-за присущего этому методу состояния гонки рекомендуется использовать его только для отладки и мониторинга.
- Параметры:
-
list— массив, в который помещается список групп потоков -
recurse— еслиtrue, рекурсивно перечисляет все подгруппы - Возвращает:
- количество групп потоков, помещенных в массив
interrupt
public final void interrupt()
- С момента появления:
- 1.2
- См. также:
destroy
@Deprecated(since="16", forRemoval=true) public final void destroy()
list
public void list()
uncaughtException
public void uncaughtException(Thread t, Throwable e)
Thread.UncaughtExceptionHandler. Метод uncaughtException класса ThreadGroup выполняет следующие действия:
- Если у этой группы потоков есть родительская группа, вызывается метод
uncaughtExceptionэтой родительской группы с теми же двумя аргументами. - В противном случае этот метод проверяет, установлен ли обработчик неперехваченных исключений по умолчанию; если установлен, его метод
uncaughtExceptionвызывается с теми же двумя аргументами. - В противном случае в стандартный поток ошибок выводится сообщение с именем потока, возвращаемым методом
getNameэтого потока, и трассировкой стека, сформированной методомThrowableprintStackTrace.
Приложения могут переопределить этот метод в подклассах ThreadGroup, чтобы задать альтернативную обработку неперехваченных исключений.
- Определен в:
-
uncaughtExceptionв интерфейсеThread.UncaughtExceptionHandler - Параметры:
-
t— поток, который собирается завершиться. -
e— неперехваченное исключение.
toString
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/ThreadGroup.html