Класс ThreadGroup
- java.lang.Object
-
- java.lang.ThreadGroup
- Все реализованные интерфейсы:
- Thread.UncaughtExceptionHandler
public class ThreadGroup extends Object implements Thread.UncaughtExceptionHandler
Группа потоков представляет собой набор потоков. Кроме того, группа потоков может также включать другие группы потоков. Группы потоков образуют дерево, в котором каждая группа потоков, за исключением начальной группы потоков, имеет родителя.
Поток может получить доступ к информации о своей собственной группе потоков, но не может получить доступ к информации о родительской группе потоков или любой другой группе потоков.
- С:
- JDK1.0
Конструкторы
| Конструктор и описание |
|---|
ThreadGroup(String name) Создает новую группу потоков. |
ThreadGroup(ThreadGroup parent,
String name) Создает новую группу потоков. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
int |
activeCount() Возвращает приблизительное количество активных потоков в этой группе потоков и ее подгруппах. |
int |
activeGroupCount() Возвращает приблизительное количество активных групп в этой группе потоков и ее подгруппах. |
boolean |
allowThreadSuspension(boolean b) Устаревший. Определение этого вызова зависит от |
void |
checkAccess() Определяет, имеет ли текущий запущенный поток разрешение на модификацию этой группы потоков. |
void |
destroy() Уничтожает эту группу потоков и все ее подгруппы. |
int |
enumerate(Thread[] list) Копирует в указанный массив все активные потоки в этой группе потоков и ее подгруппах. |
int |
enumerate(Thread[] list,
boolean recurse) Копирует в указанный массив все активные потоки в этой группе потоков. |
int |
enumerate(ThreadGroup[] list) Копирует в указанный массив ссылки на все активные подгруппы в этой группе потоков и ее подгруппах. |
int |
enumerate(ThreadGroup[] list,
boolean recurse) Копирует в указанный массив ссылки на все активные подгруппы в этой группе потоков. |
int |
getMaxPriority() Возвращает максимальный приоритет этой группы потоков. |
String |
getName() Возвращает имя этой группы потоков. |
ThreadGroup |
getParent() Возвращает родителя этой группы потоков. |
void |
interrupt() Прерывает все потоки в этой группе потоков. |
boolean |
isDaemon() Проверяет, является ли эта группа потоков группой демонических потоков. |
boolean |
isDestroyed() Проверяет, была ли уничтожена эта группа потоков. |
void |
list() Выводит информацию об этой группе потоков в стандартный вывод. |
boolean |
parentOf(ThreadGroup g) Проверяет, является ли эта группа потоков группой потоков-аргументом или одной из ее предковых групп потоков. |
void |
resume() Устаревший. Этот метод используется только совместно с |
void |
setDaemon(boolean daemon) Изменяет статус демона этой группы потоков. |
void |
setMaxPriority(int pri) Устанавливает максимальный приоритет группы. |
void |
stop() Устаревший. Этот метод по своей природе небезопасен. См. |
void |
suspend() Устаревший. Этот метод по своей природе склонны к тупиковым состояниям. См. |
String |
toString() Возвращает строковое представление этой группы потоков. |
void |
uncaughtException(Thread t,
Throwable e) Вызывается виртуальной машиной Java, когда поток в этой группе потоков останавливается из-за необработанного исключения, и у потока нет установленного |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait Конструкторы
ThreadGroup
public ThreadGroup(String name)
Создаёт новую группу потоков. Родительской группой для новой группы является группа потоков текущего выполняемого потока.
Метод checkAccess родительской группы потоков вызывается без аргументов; это может привести к исключению безопасности.
- Параметры:
-
name- имя новой группы потоков. - Исключения:
-
SecurityException- если текущий поток не может создать поток в указанной группе потоков. - С:
- JDK1.0
- См. также:
checkAccess()
ThreadGroup
public ThreadGroup(ThreadGroup parent,
String name) Создаёт новую группу потоков. Родительской группой для этой новой группы является указанная группа потоков.
Метод checkAccess родительской группы потоков вызывается без аргументов; это может привести к исключению безопасности.
- Параметры:
-
parent- родительская группа потоков. -
name- имя новой группы потоков. - Исключения:
-
NullPointerException- если аргумент группы потоков являетсяnull. -
SecurityException- если текущий поток не может создать поток в указанной группе потоков. - С:
- JDK1.0
- См. также:
-
SecurityException,checkAccess()
Методы
getName
public final String getName()
Возвращает имя этой группы потоков.
- Возвращает:
- имя этой группы потоков.
- С:
- JDK1.0
getParent
public final ThreadGroup getParent()
Возвращает родителя этой группы потоков.
Сначала, если родитель не null, метод checkAccess родительской группы потоков вызывается без аргументов; это может привести к исключению безопасности.
- Возвращает:
- родителя этой группы потоков. Группа потоков верхнего уровня — единственная группа потоков, родитель которой является
null. - Исключения:
-
SecurityException- если текущий поток не может изменить эту группу потоков. - С:
- JDK1.0
- См. также:
-
checkAccess(),SecurityException,RuntimePermission
getMaxPriority
public final int getMaxPriority()
Возвращает максимальный приоритет этой группы потоков. Потоки, которые являются частью этой группы, не могут иметь приоритет выше, чем максимальный приоритет.
- Возвращает:
- максимальный приоритет, который может иметь поток в этой группе потоков.
- С:
- JDK1.0
- См. также:
setMaxPriority(int)
isDaemon
public final boolean isDaemon()
Проверяет, является ли эта группа потоков группой демонов. Группа потоков-демонов автоматически уничтожается, когда её последний поток останавливается или её последняя группа потоков уничтожается.
- Возвращает:
-
trueесли эта группа потоков является группой потоков-демонов;falseв противном случае. - С:
- JDK1.0
isDestroyed
public boolean isDestroyed()
Проверяет, была ли эта группа потоков уничтожена.
- Возвращает:
- true, если этот объект уничтожен
- С:
- JDK1.1
setDaemon
public final void setDaemon(boolean daemon)
Изменяет статус демона для этой группы потоков.
Сначала вызывается метод checkAccess этой группы потоков без аргументов; это может привести к исключению безопасности.
Группа потоков-демонов автоматически уничтожается, когда её последний поток останавливается или её последняя группа потоков уничтожается.
- Параметры:
-
daemon- еслиtrue, помечает эту группу потоков как группу потоков-демонов; в противном случае помечает эту группу потоков как обычную. - Исключения:
-
SecurityException- если текущий поток не может изменить эту группу потоков. - С:
- JDK1.0
- См. также:
-
SecurityException,checkAccess()
setMaxPriority
public final void setMaxPriority(int pri)
Устанавливает максимальный приоритет группы. Потоки в группе потоков, которые уже имеют более высокий приоритет, не затрагиваются.
Сначала вызывается метод checkAccess этой группы потоков без аргументов; это может привести к исключению безопасности.
Если аргумент pri меньше Thread.MIN_PRIORITY или больше Thread.MAX_PRIORITY, максимальный приоритет группы остаётся неизменным.
В противном случае приоритет этого объекта ThreadGroup устанавливается в меньшее из заданного значения pri и максимально допустимого приоритета родителя этой группы потоков. (Если эта группа потоков — системная группа потоков, у которой нет родителя, то её максимальный приоритет просто устанавливается в pri.) Затем этот метод рекурсивно вызывается с pri в качестве аргумента для каждой группы потоков, принадлежащей этой группе потоков.
- Параметры:
-
pri- новый приоритет группы потоков. - Исключения:
-
SecurityException- если текущий поток не может изменить эту группу потоков. - С:
- JDK1.0
- См. также:
-
getMaxPriority(),SecurityException,checkAccess()
parentOf
public final boolean parentOf(ThreadGroup g)
Проверяет, является ли эта группа потоков аргументом группы потоков или одной из её предковых групп потоков.
- Параметры:
-
g- группа потоков. - Возвращает:
-
trueесли эта группа потоков — аргумент группы потоков или одна из её предковых групп потоков;falseв противном случае. - С:
- JDK1.0
checkAccess
public final void checkAccess()
Определяет, имеет ли текущий выполняемый поток разрешение на изменение этой группы потоков.
Если существует менеджер безопасности, вызывается его метод checkAccess с этой группой потоков в качестве аргумента. Это может привести к выбрасыванию исключения SecurityException.
- Исключения:
-
SecurityException- если текущий поток не имеет права доступа к этой группе потоков. - С:
- JDK1.0
- См. также:
SecurityManager.checkAccess(java.lang.ThreadGroup)
activeCount
public int activeCount()
Возвращает оценку количества активных потоков в этой группе потоков и её подгруппах. Рекурсивно итерирует по всем подгруппам в этой группе потоков.
Возвращаемое значение является лишь приблизительным, поскольку количество потоков может динамически изменяться во время обработки внутренних структур данных этим методом и может быть подвержено влиянию определённых системных потоков. Этот метод предназначен в основном для отладки и мониторинга.
- Возвращает:
- оценку количества активных потоков в этой группе потоков и в любой другой группе потоков, имеющей эту группу потоков в качестве предка
- С:
- JDK1.0
enumerate
public int enumerate(Thread[] list)
Копирует в указанный массив каждый активный поток в этой группе потоков и её подгруппах.
Вызов этого метода ведёт себя точно так же, как вызов
enumerate(list, true)
- Параметры:
-
list- массив, в который нужно поместить список потоков - Возвращает:
- количество потоков, помещённых в массив
- Исключения:
-
SecurityException- если checkAccess определяет, что текущий поток не имеет доступа к этой группе потоков - С:
- JDK1.0
enumerate
public int enumerate(Thread[] list,
boolean recurse) Копирует в указанный массив каждый активный поток в этой группе потоков. Если recurse равно true, этот метод рекурсивно перечисляет все подгруппы этой группы потоков, и ссылки на каждый активный поток в этих подгруппах также включаются. Если массив слишком короткий, чтобы вместить все потоки, дополнительные потоки игнорируются.
Приложение может использовать метод activeCount, чтобы получить оценку того, каким должен быть размер массива, однако если массив слишком короткий, чтобы вместить все потоки, дополнительные потоки игнорируются. Если крайне важно получить каждый активный поток в этой группе потоков, вызывающий должен проверить, что возвращаемое значение int строго меньше длины list.
Из-за присущей этой функции гонки рекомендуется использовать её только для отладки и мониторинга.
- Параметры:
-
list- массив, в который нужно поместить список потоков -
recurse- еслиtrue, рекурсивно перечислить все подгруппы этой группы потоков - Возвращает:
- количество потоков, помещённых в массив
- Исключения:
-
SecurityException- если checkAccess определяет, что текущий поток не имеет доступа к этой группе потоков - С:
- JDK1.0
activeGroupCount
public int activeGroupCount()
Возвращает оценку количества активных групп в этой группе потоков и её подгруппах. Рекурсивно итерирует по всем подгруппам в этой группе потоков.
Возвращаемое значение является лишь приблизительным, поскольку количество групп потоков может динамически изменяться во время обработки внутренних структур данных этим методом. Этот метод предназначен в основном для отладки и мониторинга.
- Возвращает:
- количество активных групп потоков с этой группой потоков как предком
- С:
- JDK1.0
enumerate
public int enumerate(ThreadGroup[] list)
Копирует в указанный массив ссылки на все активные подгруппы в этой группе потоков и её подгруппах.
Вызов этого метода ведёт себя точно так же, как вызов
enumerate(list, true)
- Параметры:
-
list- массив, в который нужно поместить список групп потоков - Возвращает:
- количество групп потоков, помещённых в массив
- Исключения:
-
SecurityException- если checkAccess определяет, что текущий поток не имеет доступа к этой группе потоков - С:
- JDK1.0
enumerate
public int enumerate(ThreadGroup[] list,
boolean recurse) Копирует в указанный массив ссылки на все активные подгруппы в этой группе потоков. Если recurse равно true, этот метод рекурсивно перечисляет все подгруппы этой группы потоков, и ссылки на каждую активную группу потоков в этих подгруппах также включаются.
Приложение может использовать метод activeGroupCount для получения оценки размера массива, однако если массив слишком короткий, чтобы вместить все группы потоков, лишние группы потоков будут проигнорированы. Если критично получить каждую активную подгруппу в этой группе потоков, вызывающий метод должен проверить, что возвращаемое значение int строго меньше длины list.
Из-за внутренней гонки в этом методе рекомендуется использовать его только для отладки и мониторинга.
- Параметры:
-
list- массив, в который нужно поместить список групп потоков -
recurse- еслиtrue, рекурсивно перечислить все подгруппы - Возвращает:
- количество групп потоков, помещенных в массив
- Выбрасывает:
-
SecurityException- если checkAccess определяет, что текущий поток не может получить доступ к этой группе потоков - С:
- JDK1.0
stop
@Deprecated public final void stop()
Устарело. Этот метод небезопасен. Подробнее см. Thread.stop().
Останавливает все потоки в этой группе потоков.
Сначала вызывается метод checkAccess этой группы потоков без аргументов; это может привести к исключению безопасности.
Затем этот метод вызывает метод stop для всех потоков в этой группе потоков и во всех ее подгруппах.
- Выбрасывает:
-
SecurityException- если текущий поток не имеет права доступа к этой группе потоков или к любому из потоков в группе потоков. - С:
- JDK1.0
- См. также:
-
SecurityException,Thread.stop(),checkAccess()
interrupt
public final void interrupt()
Прерывает все потоки в этой группе потоков.
Сначала вызывается метод checkAccess этой группы потоков без аргументов; это может привести к исключению безопасности.
Затем этот метод вызывает метод interrupt для всех потоков в этой группе потоков и во всех ее подгруппах.
- Выбрасывает:
-
SecurityException- если текущий поток не имеет права доступа к этой группе потоков или к любому из потоков в группе потоков. - С:
- 1.2
- См. также:
-
Thread.interrupt(),SecurityException,checkAccess()
suspend
@Deprecated public final void suspend()
Устарело. Этот метод склонен к тупикам. Подробнее см. Thread.suspend().
Приостанавливает все потоки в этой группе потоков.
Сначала вызывается метод checkAccess этой группы потоков без аргументов; это может привести к исключению безопасности.
Затем этот метод вызывает метод suspend для всех потоков в этой группе потоков и во всех ее подгруппах.
- Выбрасывает:
-
SecurityException- если текущий поток не имеет права доступа к этой группе потоков или к любому из потоков в группе потоков. - С:
- JDK1.0
- См. также:
-
Thread.suspend(),SecurityException,checkAccess()
resume
@Deprecated public final void resume()
Устарело. Этот метод используется только совместно с Thread.suspend и ThreadGroup.suspend, оба из которых устарели, так как они склонны к тупикам. Подробнее см. Thread.suspend().
Возобновляет все потоки в этой группе потоков.
Сначала вызывается метод checkAccess этой группы потоков без аргументов; это может привести к исключению безопасности.
Затем этот метод вызывает метод resume для всех потоков в этой группе потоков и во всех ее подгруппах.
- Выбрасывает:
-
SecurityException- если текущий поток не имеет права доступа к этой группе потоков или к любому из потоков в группе потоков. - С:
- JDK1.0
- См. также:
-
SecurityException,Thread.resume(),checkAccess()
destroy
public final void destroy()
Уничтожает эту группу потоков и все ее подгруппы. Эта группа потоков должна быть пустой, указывая, что все потоки, которые ранее находились в этой группе потоков, остановились.
Сначала вызывается метод checkAccess этой группы потоков без аргументов; это может привести к исключению безопасности.
- Выбрасывает:
-
IllegalThreadStateException- если группа потоков не пустая или если группа потоков уже уничтожена. -
SecurityException- если текущий поток не может изменить эту группу потоков. - С:
- JDK1.0
- См. также:
checkAccess()
list
public void list()
Выводит информацию об этой группе потоков в стандартный вывод. Этот метод полезен только для отладки.
- С:
- JDK1.0
uncaughtException
public void uncaughtException(Thread t,
Throwable e) Вызывается виртуальной машиной Java, когда поток в этой группе потоков останавливается из-за непредвиденного исключения, и у потока нет установленного специального обработчика Thread.UncaughtExceptionHandler.
Метод uncaughtException в ThreadGroup делает следующее:
- Если у этой группы потоков есть родительская группа потоков, вызывается метод
uncaughtExceptionэтого родителя с теми же двумя аргументами. - В противном случае этот метод проверяет, установлен ли по умолчанию обработчик непредвиденных исключений, и если да, вызывается его метод
uncaughtExceptionс теми же двумя аргументами. - В противном случае этот метод определяет, является ли аргумент
ThrowableэкземпляромThreadDeath. Если это так, ничего особенного не делается. В противном случае выводится сообщение, содержащее имя потока, возвращаемое методом потокаgetName, и стек-трейс, используя методThrowable'sprintStackTrace, в поток стандартной ошибки.
Приложения могут переопределить этот метод в подклассах ThreadGroup для альтернативной обработки непредвиденных исключений.
- Определено:
-
uncaughtExceptionв интерфейсеThread.UncaughtExceptionHandler - Параметры:
-
t- поток, который собирается завершиться. -
e- непредвиденное исключение. - С:
- JDK1.0
allowThreadSuspension
@Deprecated public boolean allowThreadSuspension(boolean b)
Устарело. Определение этого вызова зависит от suspend(), который устарел. Более того, поведение этого вызова никогда не было определено.
Используется VM для управления неявной приостановкой lowmem.
- Параметры:
-
b- boolean для разрешения или запрета приостановки - Возвращает:
- true при успехе
- С:
- JDK1.1
toString
public String toString()
Возвращает строковое представление этой группы потоков.
© 1993, 2020, 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.