Spec-Zone.ru › OpenJDK 8

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

Устаревший.

Определение этого вызова зависит от 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, оба из которых устарели, так как они по своей природе склонны к тупиковым состояниям. См. Thread.suspend() для получения подробностей.

void setDaemon(boolean daemon)

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

void setMaxPriority(int pri)

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

void stop()

Устаревший.

Этот метод по своей природе небезопасен. См. Thread.stop() для получения подробностей.

void suspend()

Устаревший.

Этот метод по своей природе склонны к тупиковым состояниям. См. Thread.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 - если текущий поток не может создать поток в указанной группе потоков.
С:
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's printStackTrace, в поток стандартной ошибки.

Приложения могут переопределить этот метод в подклассах 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()

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

Переопределяет:
toString в классе Object
Возвращает:
строковое представление этой группы потоков.
С:
JDK1.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.

Spec-Zone.ru

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