Класс 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() |
Возвращает строковое представление этой группы потоков Thread. |
void |
uncaughtException |
Вызывается виртуальной машиной Java, когда поток в этой группе потоков останавливается из-за неперехваченного исключения и для потока не установлен специальный Thread.UncaughtExceptionHandler. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, является ли какой-либо другой объект «равным» этому объекту. |
protected void |
finalize() |
Устарел и будет удалён: этот элемент API подлежит удалению в будущей версии. Финализация устарела и подлежит удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс среды выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
Подробное описание конструкторов
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этого потока, и трассировкой стека, полученной с помощью методаprintStackTraceклассаThrowable.
Приложения могут переопределить этот метод в подклассах 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.