Класс ThreadGroup
- Все реализованные интерфейсы:
Thread.UncaughtExceptionHandler
public class ThreadGroup extends Object implements Thread.UncaughtExceptionHandler
Поток может получить доступ к информации о своей собственной группе потоков, но не может получить доступ к информации о родительской группе потоков или любой другой группе потоков.
- С:
- 1.0
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
ThreadGroup |
Создает новую группу потоков. |
ThreadGroup |
Создает новую группу потоков. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
int |
activeCount() |
Возвращает оценку количества активных потоков в этой группе потоков и ее подгруппах. |
int |
activeGroupCount() |
Возвращает оценку количества активных групп в этой группе потоков и ее подгруппах. |
boolean |
allowThreadSuspension |
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии. |
final void |
checkAccess() |
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии. Этот метод полезен только в сочетании с менеджером безопасности, который устарел и может быть удален в будущей версии. |
final void |
destroy() |
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии. Определение уничтожения ThreadGroup некорректно. |
int |
enumerate |
Копирует в указанный массив каждый активный поток в этой группе потоков и ее подгруппах. |
int |
enumerate |
Копирует в указанный массив каждый активный поток в этой группе потоков. |
int |
enumerate |
Копирует в указанный массив ссылки на каждую активную подгруппу в этой группе потоков и ее подгруппах. |
int |
enumerate |
Копирует в указанный массив ссылки на каждую активную подгруппу в этой группе потоков. |
final int |
getMaxPriority() |
Возвращает максимальный приоритет этой группы потоков. |
final String |
getName() |
Возвращает имя этой группы потоков. |
final ThreadGroup |
getParent() |
Возвращает родительскую группу потоков. |
final void |
interrupt() |
Прерывает все потоки в этой группе потоков. |
final boolean |
isDaemon() |
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии. Определение уничтожения ThreadGroup некорректно. |
boolean |
isDestroyed() |
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии. Определение уничтожения ThreadGroup некорректно. |
void |
list() |
Выводит информацию об этой группе потоков в стандартный вывод. |
final boolean |
parentOf |
Проверяет, является ли эта группа потоков аргументом группы потоков или одной из ее предковых групп потоков. |
final void |
resume() |
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии. Этот метод используется только в сочетании с Thread.suspend и ThreadGroup.suspend, которые устарели, поскольку они склонны к тупикам. |
final void |
setDaemon |
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии. Определение уничтожения ThreadGroup некорректно. |
final void |
setMaxPriority |
Устанавливает максимальный приоритет группы. |
final void |
stop() |
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии. Этот метод небезопасен. |
final void |
suspend() |
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии. Этот метод склон к тупикам. |
String |
toString() |
Возвращает строковое представление этой группы потоков. |
void |
uncaughtException |
Вызывается виртуальной машиной Java, когда поток в этой группе потоков завершается из-за необработанного исключения, и у потока нет установленного обработчика Thread.UncaughtExceptionHandler. |
Подробное описание конструкторов
ThreadGroup
public ThreadGroup(String name)
Метод checkAccess родительской группы потоков вызывается без аргументов; это может привести к исключению безопасности.
- Параметры:
-
name- имя новой группы потоков. - Исключения:
-
SecurityException- если текущий поток не может создать поток в указанной группе потоков. - С:
- 1.0
- См. также:
ThreadGroup
public ThreadGroup(ThreadGroup parent, String name)
Метод checkAccess родительской группы потоков вызывается без аргументов; это может привести к исключению безопасности.
- Параметры:
-
parent- родительская группа потоков. -
name- имя новой группы потоков. - Исключения:
-
NullPointerException- если аргумент группы потоков являетсяnull. -
SecurityException- если текущий поток не может создать поток в указанной группе потоков. - С:
- 1.0
- См. также:
Подробное описание методов
getName
public final String getName()
- Возвращает:
- имя этой группы потоков.
- С:
- 1.0
getParent
public final ThreadGroup getParent()
Сначала, если родитель не null, метод checkAccess родительской группы потоков вызывается без аргументов; это может привести к исключению безопасности.
- Возвращает:
- родитель этой группы потоков. Группа потоков верхнего уровня — единственная группа потоков, у которой родитель
null. - Исключения:
-
SecurityException- если текущий поток не может изменить эту группу потоков. - С:
- 1.0
- См. также:
getMaxPriority
public final int getMaxPriority()
- Возвращает:
- максимальный приоритет, который может иметь поток в этой группе потоков.
- С:
- 1.0
- См. также:
isDaemon
@Deprecated(since="16", forRemoval=true) public final boolean isDaemon()
- Возвращает:
-
trueесли эта группа потоков является демонической группой потоков;falseв противном случае. - С:
- 1.0
isDestroyed
@Deprecated(since="16", forRemoval=true) public boolean isDestroyed()
- Возвращает:
- true, если этот объект уничтожен
- С:
- 1.1
setDaemon
@Deprecated(since="16", forRemoval=true) public final void setDaemon(boolean daemon)
Сначала метод checkAccess этой группы потоков вызывается без аргументов; это может привести к исключению безопасности.
Демоническая группа потоков автоматически уничтожается, когда её последний поток остановлен или её последняя группа потоков уничтожена.
- Параметры:
-
daemon- еслиtrue, помечает эту группу потоков как демоническую группу потоков; в противном случае помечает эту группу потоков как обычную. - Исключения:
-
SecurityException- если текущий поток не может изменить эту группу потоков. - С:
- 1.0
- См. также:
setMaxPriority
public final void setMaxPriority(int pri)
Сначала метод checkAccess этой группы потоков вызывается без аргументов; это может привести к исключению безопасности.
Если аргумент pri меньше Thread.MIN_PRIORITY или больше Thread.MAX_PRIORITY, максимальный приоритет группы остаётся неизменным.
В противном случае приоритет этого объекта ThreadGroup устанавливается в меньшее из указанного pri и максимального разрешённого приоритета родителя этой группы потоков. (Если эта группа потоков является системной группой потоков, у которой нет родителя, то её максимальный приоритет просто устанавливается в pri.) Затем этот метод вызывается рекурсивно, с pri в качестве аргумента, для каждой группы потоков, которая принадлежит этой группе потоков.
- Параметры:
-
pri- новый приоритет группы потоков. - Исключения:
-
SecurityException- если текущий поток не может изменить эту группу потоков. - С:
- 1.0
- См. также:
parentOf
public final boolean parentOf(ThreadGroup g)
- Параметры:
-
g- группа потоков. - Возвращает:
-
trueесли эта группа потоков является аргументом группы потоков или одной из её предковой групп потоков;falseв противном случае. - С:
- 1.0
checkAccess
@Deprecated(since="17", forRemoval=true) public final void checkAccess()
Если существует менеджер безопасности, его метод checkAccess вызывается с этой группой потоков в качестве аргумента. Это может привести к броску SecurityException.
- Исключения:
-
SecurityException- если текущий поток не имеет разрешения на доступ к этой группе потоков. - С:
- 1.0
- См. также:
activeCount
public int activeCount()
Возвращаемое значение является только оценкой, потому что количество потоков может динамически изменяться во время прохождения этого метода по внутренним структурам данных и может зависеть от наличия определённых системных потоков. Этот метод предназначен в первую очередь для отладки и мониторинга.
- Возвращает:
- оценка количества активных потоков в этой группе потоков и в любой другой группе потоков, у которой эта группа потоков является предком
- С:
- 1.0
перечислить
public int enumerate(Thread[] list)
Вызов этого метода ведет себя точно так же, как вызов
перечислить(list, true)
- Параметры:
-
list- массив, в который необходимо поместить список потоков - Возвращает:
- количество потоков, помещенных в массив
- Исключения:
-
SecurityException- если checkAccess определяет, что текущий поток не имеет доступа к этой группе потоков - С:
- 1.0
перечислить
public int enumerate(Thread[] list, boolean recurse)
recurse равно true, этот метод рекурсивно перечисляет все подгруппы этой группы потоков, и ссылки на каждый активный поток в этих подгруппах также включаются. Если массив слишком короткий, чтобы вместить все потоки, дополнительные потоки игнорируются. Приложение может использовать метод activeCount, чтобы получить оценку того, какой длины должен быть массив, однако если массив слишком короткий, чтобы вместить все потоки, дополнительные потоки игнорируются. Если критически важно получить каждый активный поток в этой группе потоков, вызывающий метод должен проверить, что возвращаемое значение int строго меньше длины list.
Из-за внутренней гонки в этом методе рекомендуется использовать его только для отладки и мониторинга.
- Параметры:
-
list- массив, в который необходимо поместить список потоков -
recurse- еслиtrue, рекурсивно перечислить все подгруппы этой группы потоков - Возвращает:
- количество потоков, помещенных в массив
- Исключения:
-
SecurityException- если checkAccess определяет, что текущий поток не имеет доступа к этой группе потоков - С:
- 1.0
количество_активных_групп
public int activeGroupCount()
Возвращаемое значение является лишь оценкой, так как количество групп потоков может динамически меняться, пока этот метод обходит внутренние структуры данных. Этот метод предназначен в первую очередь для отладки и мониторинга.
- Возвращает:
- количество активных групп потоков с этой группой потоков как предком
- С:
- 1.0
перечислить
public int enumerate(ThreadGroup[] list)
Вызов этого метода ведет себя точно так же, как вызов
перечислить(list, true)
- Параметры:
-
list- массив, в который необходимо поместить список групп потоков - Возвращает:
- количество групп потоков, помещенных в массив
- Исключения:
-
SecurityException- если checkAccess определяет, что текущий поток не имеет доступа к этой группе потоков - С:
- 1.0
перечислить
public int enumerate(ThreadGroup[] list, boolean recurse)
recurse равно true, этот метод рекурсивно перечисляет все подгруппы этой группы потоков, и ссылки на каждую активную группу потоков в этих подгруппах также включаются. Приложение может использовать метод activeGroupCount, чтобы получить оценку того, какой длины должен быть массив, однако если массив слишком короткий, чтобы вместить все группы потоков, дополнительные группы потоков игнорируются. Если критически важно получить каждую активную подгруппу в этой группе потоков, вызывающий метод должен проверить, что возвращаемое значение int строго меньше длины list.
Из-за внутренней гонки в этом методе рекомендуется использовать его только для отладки и мониторинга.
- Параметры:
-
list- массив, в который необходимо поместить список групп потоков -
recurse- еслиtrue, рекурсивно перечислить все подгруппы - Возвращает:
- количество групп потоков, помещенных в массив
- Исключения:
-
SecurityException- если checkAccess определяет, что текущий поток не имеет доступа к этой группе потоков - С:
- 1.0
остановить
@Deprecated(since="1.2", forRemoval=true) public final void stop()
Thread.stop() для подробностей. Сначала вызывается метод checkAccess этой группы потоков без аргументов; это может привести к исключению безопасности.
Затем этот метод вызывает метод stop для всех потоков в этой группе потоков и всех её подгрупп.
- Исключения:
-
SecurityException- если текущий поток не имеет права доступа к этой группе потоков или к любому из потоков в группе потоков. - С:
- 1.0
- См. также:
прервать
public final void interrupt()
Сначала вызывается метод checkAccess этой группы потоков без аргументов; это может привести к исключению безопасности.
Затем этот метод вызывает метод interrupt для всех потоков в этой группе потоков и всех её подгрупп.
- Исключения:
-
SecurityException- если текущий поток не имеет права доступа к этой группе потоков или к любому из потоков в группе потоков. - С:
- 1.2
- См. также:
приостановить
@Deprecated(since="1.2", forRemoval=true) public final void suspend()
Thread.suspend() для подробностей. Сначала вызывается метод checkAccess этой группы потоков без аргументов; это может привести к исключению безопасности.
Затем этот метод вызывает метод suspend для всех потоков в этой группе потоков и всех её подгрупп.
- Исключения:
-
SecurityException- если текущий поток не имеет права доступа к этой группе потоков или к любому из потоков в группе потоков. - С:
- 1.0
- См. также:
возобновить
@Deprecated(since="1.2", forRemoval=true) public final void resume()
Thread.suspend и ThreadGroup.suspend, оба из которых устарели, поскольку они внутренне подвержены тупиковым ситуациям. См. Thread.suspend() для подробностей. Сначала вызывается метод checkAccess этой группы потоков без аргументов; это может привести к исключению безопасности.
Затем этот метод вызывает метод resume для всех потоков в этой группе потоков и всех её подгрупп.
- Исключения:
-
SecurityException- если текущий поток не имеет права доступа к этой группе потоков или к любому из потоков в группе потоков. - С:
- 1.0
- См. также:
уничтожить
@Deprecated(since="16", forRemoval=true) public final void destroy()
Сначала вызывается метод checkAccess этой группы потоков без аргументов; это может привести к исключению безопасности.
- Исключения:
-
IllegalThreadStateException- если группа потоков не пустая или если группа потоков уже была уничтожена. -
SecurityException- если текущий поток не может изменить эту группу потоков. - С:
- 1.0
- См. также:
список
public void list()
- С:
- 1.0
uncaughtException
public void uncaughtException(Thread t, Throwable e)
Thread.UncaughtExceptionHandler. Метод uncaughtException группы ThreadGroup выполняет следующее:
- Если у этой группы потоков есть родительская группа потоков, вызывается метод
uncaughtExceptionэтой родительской группы с теми же двумя аргументами. - В противном случае, этот метод проверяет, установлен ли по умолчанию обработчик необработанных исключений, и если да, то вызывается его метод
uncaughtExceptionс теми же двумя аргументами. - В противном случае, этот метод определяет, является ли аргумент
ThrowableэкземпляромThreadDeath. Если да, то ничего особенного не происходит. В противном случае, выводится сообщение, содержащее имя потока, полученное из метода потокаgetName, и стек-трейс, используя методThrowableprintStackTrace, в поток стандартных сообщений об ошибках.
Приложения могут переопределять этот метод в подклассах ThreadGroup для альтернативной обработки необработанных исключений.
- Specified by:
-
uncaughtExceptionв интерфейсеThread.UncaughtExceptionHandler - Parameters:
-
t- поток, который собирается завершиться. -
e- необработанное исключение. - Since:
- 1.0
allowThreadSuspension
@Deprecated(since="1.2", forRemoval=true) public boolean allowThreadSuspension(boolean b)
suspend(), который устарел. Кроме того, поведение этого вызова никогда не было определено.- Parameters:
-
b- boolean для разрешения или запрета приостановки - Returns:
- true при успехе
- Since:
- 1.1
toString
public String toString()
- Overrides:
-
toStringв классеObject - Returns:
- строковое представление этой группы потоков.
- Since:
- 1.0
© 1993, 2021, 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/17/docs/api/java.base/java/lang/ThreadGroup.html
suspend(), который устарел.