Spec-Zone.ru › OpenJDK 17

Класс ThreadGroup

java.lang.Object
java.lang.ThreadGroup
Все реализованные интерфейсы:
Thread.UncaughtExceptionHandler
public class ThreadGroup extends Object implements Thread.UncaughtExceptionHandler
Группа потоков представляет собой набор потоков. Кроме того, группа потоков может также включать другие группы потоков. Группы потоков образуют дерево, в котором каждая группа потоков, за исключением начальной группы потоков, имеет родительскую группу.

Поток может получить доступ к информации о своей собственной группе потоков, но не может получить доступ к информации о родительской группе потоков или любой другой группе потоков.

С:
1.0

Краткое описание конструкторов

Конструктор Описание
ThreadGroup(String name)
Создает новую группу потоков.
ThreadGroup(ThreadGroup parent, String name)
Создает новую группу потоков.

Краткое описание методов

Модификатор и тип Метод Описание
int activeCount()
Возвращает оценку количества активных потоков в этой группе потоков и ее подгруппах.
int activeGroupCount()
Возвращает оценку количества активных групп в этой группе потоков и ее подгруппах.
boolean allowThreadSuspension(boolean b)
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Определение этого вызова зависит от suspend(), который устарел.
final void checkAccess()
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Этот метод полезен только в сочетании с менеджером безопасности, который устарел и может быть удален в будущей версии.
final void destroy()
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Определение уничтожения ThreadGroup некорректно.
int enumerate(Thread[] list)
Копирует в указанный массив каждый активный поток в этой группе потоков и ее подгруппах.
int enumerate(Thread[] list, boolean recurse)
Копирует в указанный массив каждый активный поток в этой группе потоков.
int enumerate(ThreadGroup[] list)
Копирует в указанный массив ссылки на каждую активную подгруппу в этой группе потоков и ее подгруппах.
int enumerate(ThreadGroup[] list, boolean recurse)
Копирует в указанный массив ссылки на каждую активную подгруппу в этой группе потоков.
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(ThreadGroup g)
Проверяет, является ли эта группа потоков аргументом группы потоков или одной из ее предковых групп потоков.
final void resume()
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Этот метод используется только в сочетании с Thread.suspend и ThreadGroup.suspend, которые устарели, поскольку они склонны к тупикам.
final void setDaemon(boolean daemon)
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Определение уничтожения ThreadGroup некорректно.
final void setMaxPriority(int pri)
Устанавливает максимальный приоритет группы.
final void stop()
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Этот метод небезопасен.
final void suspend()
Устаревший, для удаления: Этот элемент API может быть удален в будущей версии.
Этот метод склон к тупикам.
String toString()
Возвращает строковое представление этой группы потоков.
void uncaughtException(Thread t, Throwable e)
Вызывается виртуальной машиной Java, когда поток в этой группе потоков завершается из-за необработанного исключения, и у потока нет установленного обработчика Thread.UncaughtExceptionHandler.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Подробное описание конструкторов

ThreadGroup

public ThreadGroup(String name)
Создаёт новую группу потоков. Родительской группой для этой новой группы является группа потоков текущего выполняющегося потока.

Метод checkAccess родительской группы потоков вызывается без аргументов; это может привести к исключению безопасности.

Параметры:
name - имя новой группы потоков.
Исключения:
SecurityException - если текущий поток не может создать поток в указанной группе потоков.
С:
1.0
См. также:
  • checkAccess()

ThreadGroup

public ThreadGroup(ThreadGroup parent, String name)
Создаёт новую группу потоков. Родительской группой для этой новой группы является указанная группа потоков.

Метод checkAccess родительской группы потоков вызывается без аргументов; это может привести к исключению безопасности.

Параметры:
parent - родительская группа потоков.
name - имя новой группы потоков.
Исключения:
NullPointerException - если аргумент группы потоков является null.
SecurityException - если текущий поток не может создать поток в указанной группе потоков.
С:
1.0
См. также:
  • SecurityException
  • checkAccess()

Подробное описание методов

getName

public final String getName()
Возвращает имя этой группы потоков.
Возвращает:
имя этой группы потоков.
С:
1.0

getParent

public final ThreadGroup getParent()
Возвращает родителя этой группы потоков.

Сначала, если родитель не null, метод checkAccess родительской группы потоков вызывается без аргументов; это может привести к исключению безопасности.

Возвращает:
родитель этой группы потоков. Группа потоков верхнего уровня — единственная группа потоков, у которой родитель null.
Исключения:
SecurityException - если текущий поток не может изменить эту группу потоков.
С:
1.0
См. также:
  • checkAccess()
  • SecurityException
  • RuntimePermission

getMaxPriority

public final int getMaxPriority()
Возвращает максимальный приоритет этой группы потоков. Потоки, которые являются частью этой группы, не могут иметь приоритет выше максимального приоритета.
Возвращает:
максимальный приоритет, который может иметь поток в этой группе потоков.
С:
1.0
См. также:
  • setMaxPriority(int)

isDaemon

@Deprecated(since="16", forRemoval=true) public final boolean isDaemon()
Устаревший, для удаления: Этот элемент API может быть удалён в будущей версии.
API и механизм уничтожения ThreadGroup имеют принципиальные недостатки. Возможность явного или автоматического уничтожения группы потоков и понятие демонической группы потоков будут удалены в будущей версии.
Проверяет, является ли эта группа потоков демонической группой потоков. Демоническая группа потоков автоматически уничтожается, когда её последний поток остановлен или её последняя группа потоков уничтожена.
Возвращает:
true если эта группа потоков является демонической группой потоков; false в противном случае.
С:
1.0

isDestroyed

@Deprecated(since="16", forRemoval=true) public boolean isDestroyed()
Устаревший, для удаления: Этот элемент API может быть удалён в будущей версии.
API и механизм уничтожения ThreadGroup имеют принципиальные недостатки. Возможность явного или автоматического уничтожения группы потоков будет удалена в будущей версии.
Проверяет, была ли эта группа потоков уничтожена.
Возвращает:
true, если этот объект уничтожен
С:
1.1

setDaemon

@Deprecated(since="16", forRemoval=true) public final void setDaemon(boolean daemon)
Устаревший, для удаления: Этот элемент API может быть удалён в будущей версии.
API и механизм уничтожения ThreadGroup имеют принципиальные недостатки. Возможность явного или автоматического уничтожения группы потоков и понятие демонической группы потоков будут удалены в будущей версии.
Изменяет состояние демона этой группы потоков.

Сначала метод checkAccess этой группы потоков вызывается без аргументов; это может привести к исключению безопасности.

Демоническая группа потоков автоматически уничтожается, когда её последний поток остановлен или её последняя группа потоков уничтожена.

Параметры:
daemon - если true, помечает эту группу потоков как демоническую группу потоков; в противном случае помечает эту группу потоков как обычную.
Исключения:
SecurityException - если текущий поток не может изменить эту группу потоков.
С:
1.0
См. также:
  • SecurityException
  • checkAccess()

setMaxPriority

public final void setMaxPriority(int pri)
Устанавливает максимальный приоритет группы. Потоки в группе потоков, которые уже имеют более высокий приоритет, не затрагиваются.

Сначала метод checkAccess этой группы потоков вызывается без аргументов; это может привести к исключению безопасности.

Если аргумент pri меньше Thread.MIN_PRIORITY или больше Thread.MAX_PRIORITY, максимальный приоритет группы остаётся неизменным.

В противном случае приоритет этого объекта ThreadGroup устанавливается в меньшее из указанного pri и максимального разрешённого приоритета родителя этой группы потоков. (Если эта группа потоков является системной группой потоков, у которой нет родителя, то её максимальный приоритет просто устанавливается в pri.) Затем этот метод вызывается рекурсивно, с pri в качестве аргумента, для каждой группы потоков, которая принадлежит этой группе потоков.

Параметры:
pri - новый приоритет группы потоков.
Исключения:
SecurityException - если текущий поток не может изменить эту группу потоков.
С:
1.0
См. также:
  • getMaxPriority()
  • SecurityException
  • checkAccess()

parentOf

public final boolean parentOf(ThreadGroup g)
Проверяет, является ли эта группа потоков аргументом группы потоков или одной из её предковой группы потоков.
Параметры:
g - группа потоков.
Возвращает:
true если эта группа потоков является аргументом группы потоков или одной из её предковой групп потоков; false в противном случае.
С:
1.0

checkAccess

@Deprecated(since="17", forRemoval=true) public final void checkAccess()
Устаревший, для удаления: Этот элемент API может быть удалён в будущей версии.
Этот метод полезен только в сочетании с Security Manager, который устарел и может быть удалён в будущей версии. Вследствие этого этот метод также устарел и может быть удалён. Замены для Security Manager или этого метода нет.
Определяет, имеет ли текущий выполняемый поток разрешение на изменение этой группы потоков.

Если существует менеджер безопасности, его метод checkAccess вызывается с этой группой потоков в качестве аргумента. Это может привести к броску SecurityException.

Исключения:
SecurityException - если текущий поток не имеет разрешения на доступ к этой группе потоков.
С:
1.0
См. также:
  • SecurityManager.checkAccess(java.lang.ThreadGroup)

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()
Устарело, для удаления: Этот элемент API может быть удален в будущей версии.
Этот метод внутренне небезопасен. См. Thread.stop() для подробностей.
Останавливает все потоки в этой группе потоков.

Сначала вызывается метод checkAccess этой группы потоков без аргументов; это может привести к исключению безопасности.

Затем этот метод вызывает метод stop для всех потоков в этой группе потоков и всех её подгрупп.

Исключения:
SecurityException - если текущий поток не имеет права доступа к этой группе потоков или к любому из потоков в группе потоков.
С:
1.0
См. также:
  • SecurityException
  • Thread.stop()
  • checkAccess()

прервать

public final void interrupt()
Прерывает все потоки в этой группе потоков.

Сначала вызывается метод checkAccess этой группы потоков без аргументов; это может привести к исключению безопасности.

Затем этот метод вызывает метод interrupt для всех потоков в этой группе потоков и всех её подгрупп.

Исключения:
SecurityException - если текущий поток не имеет права доступа к этой группе потоков или к любому из потоков в группе потоков.
С:
1.2
См. также:
  • Thread.interrupt()
  • SecurityException
  • checkAccess()

приостановить

@Deprecated(since="1.2", forRemoval=true) public final void suspend()
Устарело, для удаления: Этот элемент API может быть удален в будущей версии.
Этот метод внутренне подвержен тупиковым ситуациям. См. Thread.suspend() для подробностей.
Приостанавливает все потоки в этой группе потоков.

Сначала вызывается метод checkAccess этой группы потоков без аргументов; это может привести к исключению безопасности.

Затем этот метод вызывает метод suspend для всех потоков в этой группе потоков и всех её подгрупп.

Исключения:
SecurityException - если текущий поток не имеет права доступа к этой группе потоков или к любому из потоков в группе потоков.
С:
1.0
См. также:
  • Thread.suspend()
  • SecurityException
  • checkAccess()

возобновить

@Deprecated(since="1.2", forRemoval=true) public final void resume()
Устарело, для удаления: Этот элемент API может быть удален в будущей версии.
Этот метод используется исключительно совместно с Thread.suspend и ThreadGroup.suspend, оба из которых устарели, поскольку они внутренне подвержены тупиковым ситуациям. См. Thread.suspend() для подробностей.
Возобновляет все потоки в этой группе потоков.

Сначала вызывается метод checkAccess этой группы потоков без аргументов; это может привести к исключению безопасности.

Затем этот метод вызывает метод resume для всех потоков в этой группе потоков и всех её подгрупп.

Исключения:
SecurityException - если текущий поток не имеет права доступа к этой группе потоков или к любому из потоков в группе потоков.
С:
1.0
См. также:
  • SecurityException
  • Thread.resume()
  • checkAccess()

уничтожить

@Deprecated(since="16", forRemoval=true) public final void destroy()
Устарело, для удаления: Этот элемент API может быть удален в будущей версии.
API и механизм уничтожения ThreadGroup изначально имеют недостатки. Возможность явного или автоматического уничтожения группы потоков будет удалена в будущей версии.
Уничтожает эту группу потоков и все её подгруппы. Эта группа потоков должна быть пустой, указывая, что все потоки, которые находились в этой группе потоков, с тех пор остановились.

Сначала вызывается метод checkAccess этой группы потоков без аргументов; это может привести к исключению безопасности.

Исключения:
IllegalThreadStateException - если группа потоков не пустая или если группа потоков уже была уничтожена.
SecurityException - если текущий поток не может изменить эту группу потоков.
С:
1.0
См. также:
  • checkAccess()

список

public void list()
Выводит информацию об этой группе потоков в стандартный вывод. Этот метод полезен только для отладки.
С:
1.0

uncaughtException

public void uncaughtException(Thread t, Throwable e)
Вызывается виртуальной машиной Java, когда поток в этой группе потоков завершается из-за необработанного исключения, и поток не имеет установленного специфического обработчика Thread.UncaughtExceptionHandler.

Метод uncaughtException группы ThreadGroup выполняет следующее:

  • Если у этой группы потоков есть родительская группа потоков, вызывается метод uncaughtException этой родительской группы с теми же двумя аргументами.
  • В противном случае, этот метод проверяет, установлен ли по умолчанию обработчик необработанных исключений, и если да, то вызывается его метод uncaughtException с теми же двумя аргументами.
  • В противном случае, этот метод определяет, является ли аргумент Throwable экземпляром ThreadDeath. Если да, то ничего особенного не происходит. В противном случае, выводится сообщение, содержащее имя потока, полученное из метода потока getName, и стек-трейс, используя метод Throwable printStackTrace, в поток стандартных сообщений об ошибках.

Приложения могут переопределять этот метод в подклассах ThreadGroup для альтернативной обработки необработанных исключений.

Specified by:
uncaughtException в интерфейсе Thread.UncaughtExceptionHandler
Parameters:
t - поток, который собирается завершиться.
e - необработанное исключение.
Since:
1.0

allowThreadSuspension

@Deprecated(since="1.2", forRemoval=true) public boolean allowThreadSuspension(boolean b)
Deprecated, for removal: Этот элемент API может быть удален в будущей версии.
Определение этого вызова зависит от 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API