Класс 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)

Устарело.

Определение этого вызова зависит от suspend(), который устарел.

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()

Устарело.

Этот метод используется только совместно с Thread.suspend и ThreadGroup.suspend, оба из которых устарели, так как они изначально предрасположены к тупику.

void setDaemon​(boolean daemon)

Изменяет статус демона этой группы потоков.

void setMaxPriority​(int pri)

Устанавливает максимальный приоритет группы.

void stop()

Устарело.

Этот метод изначально небезопасен.

void suspend()

Устарело.

Этот метод изначально предрасположен к тупику.

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

public final boolean isDaemon()

Проверяет, является ли эта группа потоков группой демонов. Группа потоков-демонов автоматически уничтожается, когда ее последний поток остановлен или ее последняя группа потоков уничтожается.

Возвращает:
true если эта группа потоков — группа потоков-демонов; false в противном случае.
С момента:
1.0

isDestroyed

public boolean isDestroyed()

Проверяет, была ли эта группа потоков уничтожена.

Возвращает:
true, если этот объект уничтожен
С момента:
1.1

setDaemon

public final void setDaemon(boolean daemon)

Изменяет состояние демона этой группы потоков.

Сначала вызывается метод 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

public final void checkAccess()

Определяет, имеет ли текущий поток разрешение на изменение этой группы потоков.

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

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

activeCount

public int activeCount()

Возвращает приблизительное количество активных потоков в этой группе потоков и ее подгруппах. Рекурсивно итерирует по всем подгруппам в этой группе потоков.

Возвращаемое значение является только приблизительным, так как количество потоков может динамически изменяться во время обхода внутренних структур данных и может быть зависеть от наличия определенных системных потоков. Этот метод предназначен в первую очередь для отладки и мониторинга.

Возвращает:
приблизительное количество активных потоков в этой группе потоков и в любой другой группе потоков, имеющей эту группу потоков в качестве предка
С момента:
1.0

enumerate

public int enumerate(Thread[] list)

Копирует в указанный массив каждый активный поток в этой группе потоков и ее подгруппах.

Вызов этого метода ведет себя точно так же, как вызов

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

enumerate

public int enumerate(Thread[] list,
                     boolean recurse)

Копирует в указанный массив каждый активный поток в этой группе потоков. Если recurse равно true, этот метод рекурсивно перечисляет все подгруппы этой группы потоков, и ссылки на каждый активный поток в этих подгруппах также включаются. Если массив недостаточно велик для хранения всех потоков, дополнительные потоки будут игнорироваться.

Приложение может использовать метод activeCount для получения оценки необходимого размера массива, однако если массив недостаточно велик для хранения всех потоков, дополнительные потоки будут игнорироваться. Если важно получить все активные потоки в этой группе потоков, вызывающий код должен проверить, что возвращенное значение int строго меньше длины list.

Из-за внутренней гонки в этом методе рекомендуется использовать его только для отладки и мониторинга.

Параметры:
list - массив, в который нужно поместить список потоков
recurse - если true, рекурсивно перечисляются все подгруппы этой группы потоков
Возвращает:
количество потоков, помещенных в массив
Исключения:
SecurityException - если checkAccess определяет, что текущий поток не может получить доступ к этой группе потоков
С момента:
1.0

activeGroupCount

public int activeGroupCount()

Возвращает приблизительное количество активных групп в этой группе потоков и ее подгруппах. Рекурсивно итерирует по всем подгруппам в этой группе потоков.

Возвращаемое значение является только приблизительным, так как количество групп потоков может динамически изменяться во время обхода внутренних структур данных. Этот метод предназначен в первую очередь для отладки и мониторинга.

Возвращает:
количество активных групп потоков с этой группой потоков в качестве предка
С момента:
1.0

enumerate

public int enumerate(ThreadGroup[] list)

Копирует в указанный массив ссылки на каждую активную подгруппу в этой группе потоков и ее подгруппах.

Вызов этого метода ведет себя точно так же, как вызов

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

enumerate

public int enumerate(ThreadGroup[] list,
                     boolean recurse)

Копирует в указанный массив ссылки на каждую активную подгруппу в этой группе потоков. Если recurse равно true, этот метод рекурсивно перечисляет все подгруппы этой группы потоков, и ссылки на каждую активную группу потоков в этих подгруппах также включаются.

Приложение может использовать метод activeGroupCount для получения оценки необходимого размера массива, однако если массив недостаточно велик для хранения всех групп потоков, дополнительные группы потоков будут игнорироваться. Если важно получить все активные подгруппы в этой группе потоков, вызывающий код должен проверить, что возвращенное значение int строго меньше длины list.

Из-за внутренней гонки в этом методе рекомендуется использовать его только для отладки и мониторинга.

Параметры:
list - массив, в который нужно поместить список групп потоков
recurse - если true, рекурсивно перечисляются все подгруппы
Возвращает:
количество групп потоков, помещенных в массив
Исключения:
SecurityException - если checkAccess определяет, что текущий поток не может получить доступ к этой группе потоков
С момента:
1.0

stop

@Deprecated(since="1.2")
public final void stop()
Устарело.
Этот метод по своей природе небезопасен. Подробнее см. Thread.stop().

Останавливает все потоки в этой группе потоков.

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

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

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

interrupt

public final void interrupt()

Прерывает все потоки в этой группе потоков.

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

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

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

suspend

@Deprecated(since="1.2")
public final void suspend()
Устарело.
Этот метод потенциально приводит к тупику. Подробнее см. Thread.suspend().

Приостанавливает все потоки в этой группе потоков.

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

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

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

resume

@Deprecated(since="1.2")
public final void resume()
Устарело.
Этот метод используется только в сочетании с Thread.suspend и ThreadGroup.suspend, которые также устарели, так как они потенциально приводят к тупику. Подробнее см. Thread.suspend().

Возобновляет все потоки в этой группе потоков.

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

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

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

destroy

public final void destroy()

Уничтожает эту группу потоков и все ее подгруппы. Группа потоков должна быть пустой, что означает, что все потоки, которые ранее находились в этой группе потоков, теперь остановлены.

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

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

list

public void list()

Выводит информацию об этой группе потоков в стандартный вывод. Этот метод полезен только для отладки.

С тех пор:
1.0

uncaughtException

public void uncaughtException(Thread t,
                              Throwable e)

Вызывается виртуальной машиной Java, когда поток в этой группе потоков завершается из-за необработанного исключения, и у потока не установлен конкретный обработчик Thread.UncaughtExceptionHandler.

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

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

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

Задано:
uncaughtException в интерфейсе Thread.UncaughtExceptionHandler
Параметры:
t - поток, который вот-вот завершится.
e - необработанное исключение.
С тех пор:
1.0

allowThreadSuspension

@Deprecated(since="1.2")
public boolean allowThreadSuspension(boolean b)
Устарело.
Определение этого вызова зависит от suspend(), который устарел. Кроме того, поведение этого вызова никогда не было определено.

Используется ВМ для управления неявной приостановкой из-за недостатка памяти.

Параметры:
b - логическое значение для разрешения или запрета приостановки
Возвращает:
true при успехе
С тех пор:
1.1

toString

public String toString()

Возвращает строковое представление этой группы потоков.

Переопределяет:
toString в классе Object
Возвращает:
строковое представление этой группы потоков.
С тех пор:
1.0

© 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/ThreadGroup.html

Spec-Zone .ru
спецификации, руководства, описания, API