Spec-Zone .ru
спецификации, руководства, описания, API
Содержание | Предыдущий | Следующий | Индекс

20.21 Класс java.lang.ThreadGroup

Группа потока является рядом группы потока и потоки. Каждый поток принадлежит точно одной группе потока, и каждая группа потока, но один (названный "системной группой потока") принадлежит некоторой другой группе потока. Таким образом группы потока формируют дерево с системной группой потока в корне.

Группы потока обеспечивают способ управлять потоками и наложить границы безопасности; например, поток может всегда создавать новый поток в пределах своей собственной группы потока, но создание потока в другой группе потока требует одобрения менеджера безопасности (§20.17), так что делает создание группы нового потока.

public class ThreadGroup {
	public ThreadGroup(String name)
		throws SecurityException;
	public ThreadGroup(ThreadGroup parent, String name)
		throws NullPointerExpression, SecurityException,
			IllegalThreadStateException;
	public String toString();
	public final void checkAccess();
	public final String getName();
	public final ThreadGroup getParent();
	public final boolean parentOf(ThreadGroup g);
	public final void stop()
		throws SecurityException;
	public final void suspend()
		throws SecurityException;
	public final void resume()
		throws SecurityException;
	public final void destroy()
		throws SecurityException, IllegalThreadStateException;
	public final int getMaxPriority();
	public final void setMaxPriority(int newMaxPriority)
		throws SecurityException, IllegalArgumentException;
	public final boolean isDaemon();
	public final void setDaemon(boolean daemon)
		throws SecurityException;
	public 	int threadsCount();
	public int allThreadsCount()		;
	public int groupsCount();
	public int allGroupsCount();
	public Thread[] threads();
	public 	Thread[] allThreads();
	public ThreadGroup[] groups();
	public 	ThreadGroup[] allGroups();
	public int activeCount();															// deprecated
	public int activeGroupCount();															// deprecated
	public int enumerate(Thread list[]);															// deprecated
	public int enumerate(Thread list[],															// deprecated
			boolean recurse);
	public int enumerate(ThreadGroup list[]);															// deprecated
	public int enumerate(ThreadGroup list[],															// deprecated
			boolean recurse);
	public void list();
	public void uncaughtException(Thread t, Throwable e);
}
У каждой группы потока есть максимальный приоритет. Приоритет потока не может быть установлен (§20.20.23) выше чем максимальный приоритет его группы потока.

Каждая группа потока может или не может быть отмечена как демон. Когда новое ThreadGroup объект создается, недавно создаваемая группа потока отмечается как группа потока демона, если и только если группа потока, которой это принадлежит, является в настоящий момент группой потока демона. Но daemonhood группового Г потока может быть изменен в любое время, вызывая setDaemon метод ThreadGroup объект, который представляет Г (при условии, что менеджер безопасности (§20.17.12) одобряет выполнение setDaemon работа).

У каждой группы потока есть имя, которое является a String, в целях идентификации. Больше чем у одной группы потока может быть то же самое имя.

Создание группы потока требует одобрения checkAccess метод (§20.21.4) его предложенной родительской группы потока, который вперед решение к менеджеру безопасности (§20.17.11).

20.21.1 public ThreadGroup(String name)
throws SecurityException

Во-первых, checkAccess метод (§20.21.4) группы потока, которой принадлежит текущий поток, вызывают без параметров.

Этот конструктор инициализирует недавно создаваемый ThreadGroup возразите так, чтобы у этого было указанное name как его имя и принадлежит той же самой группе потока как поток, который создает группу нового потока.

Этот конструктор имеет точно тот же самый эффект как явный вызов конструктора this(Thread.currentThread().getThreadGroup(), name) (§20.21.2).

20.21.2 public ThreadGroup(ThreadGroup parent, String name)
throws NullPointerExpression, SecurityException, IllegalThreadStateException

Во-первых, checkAccess метод (§20.21.4) parent группу потока вызывают без параметров.

Если parent null, тогда a NullPointerExpression бросается. Если parent a ThreadGroup это было уничтожено методом destroy (§20.21.11), затем IllegalThreadStateException бросается.

Этот конструктор инициализирует недавно создаваемый ThreadGroup возразите так, чтобы у этого было указанное name как его имя и принадлежит группе потока, представленной parent.

Максимальный приоритет для недавно создаваемой группы потока устанавливается равный максимальному приоритету parent. Метод setMaxPriority (§20.21.13) может использоваться, чтобы изменить максимальный приоритет на нижнее значение.

Недавно создаваемая группа потока первоначально отмечается как являющийся группой потока демона если и только parent группа потока демона. Метод setDaemon (§20.21.15) может использоваться, чтобы измениться, является ли группа потока группой потока демона.

20.21.3 public String toString()

Возвращенное значение является связью следующих шести строк:

Все литеральные упомянутые выше символы от подмножества ASCII Unicode.

Переопределения toString метод Object (§20.1.3).

20.21.4 public final void checkAccess()

Если есть менеджер безопасности, checkAccess метод (§20.17.12) вызывают с этим ThreadGroup возразите как его параметр. Это может привести к броску, к текущему потоку, a SecurityException.

Этот метод вызывают методы stop (§20.21.8), suspend (§20.21.9), resume (§20.21.10), destroy (§20.21.11), setMaxPriority (§20.21.13), и setDaemon (§20.21.15).

20.21.5 public final String getName()

Текущее имя этого ThreadGroup объект возвращается как a String.

20.21.6 public final ThreadGroup getParent()

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

20.21.7 public final boolean parentOf(ThreadGroup g)

Этот метод возвраты true если и только если любая эта группа потока g или этот метод true когда применено к родитель g. Другими словами этот метод говорит, является ли эта группа потока предком g или возможно g непосредственно.

(Этот метод возможно неверно называется; более точное, если бы неуклюжий и глубокомысленный, имя было бы parentOfReflexiveTransitiveClosure.)

20.21.8 public final void stop() throws SecurityException

Во-первых, checkAccess метод (§20.21.4) этого ThreadGroup объект вызывают без параметров. Это может привести к a SecurityException будучи брошенным (в текущем потоке).

Каждый поток в этой группе потока или любой из ее подгрупп останавливается. Более точно, метод stop требуется каждый ThreadGroup и каждый Thread (§20.20.15), который принадлежит этому ThreadGroup.

20.21.9 public final void suspend() throws SecurityException

Во-первых, checkAccess метод (§20.21.4) этого ThreadGroup объект вызывают без параметров. Это может привести к a SecurityException будучи брошенным (в текущем потоке).

Каждый поток в этой группе потока или любой из ее подгрупп приостанавливается. Более точно, метод suspend требуется каждый ThreadGroup и каждый Thread (§20.20.17), который принадлежит этому ThreadGroup.

20.21.10 public final void resume() throws SecurityException

Во-первых, checkAccess метод (§20.21.4) этого ThreadGroup объект вызывают без параметров. Это может привести к a SecurityException будучи брошенным (в текущем потоке).

Каждый поток в этой группе потока или любой из ее подгрупп возобновляется. Более точно, метод resume требуется каждый ThreadGroup и каждый Thread (§20.20.18), который принадлежит этому ThreadGroup.

20.21.11 public final void destroy()
throws SecurityException, IllegalThreadStateException

Во-первых, checkAccess метод (§20.21.4) этого ThreadGroup объект вызывают без параметров. Это может привести к a SecurityException будучи брошенным (в текущем потоке).

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

Группа потока, которая в настоящий момент отмечается как группа потока демона, уничтожается автоматически, если оба из следующих условий являются истиной:

20.21.12 public final int getMaxPriority()

Текущий максимальный приоритет этого ThreadGroup объект возвращается.

20.21.13 public final void setMaxPriority(int newMaxPriority)
throws SecurityException, IllegalArgumentException

Во-первых, checkAccess метод (§20.21.4) этого ThreadGroup объект вызывают без параметров. Это может привести к a SecurityException будучи брошенным (в текущем потоке).

Если newMaxPriority параметром являются меньше чем MIN_PRIORITY (§20.20.1) или больше чем MAX_PRIORITY (§20.20.2), затем IllegalArgumentException бросается.

Иначе, приоритет этого ThreadGroup объект устанавливается в меньшие из указанных newMaxPriority и максимальный разрешенный приоритет (§20.21.12) родителя этой группы потока (§20.21.12). (Если эта группа потока является системной группой потока, у которой нет никакого родителя, тогда его максимальный приоритет просто устанавливается в newMaxPriority.) Затем этот метод вызывают рекурсивно, с newMaxPriority как его параметр, для каждой группы потока, которая принадлежит этой группе потока.

20.21.14 public final boolean isDaemon()

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

20.21.15 public final void setDaemon(boolean daemon)
throws SecurityException

Во-первых, checkAccess метод (§20.21.4) этого ThreadGroup объект вызывают без параметров. Это может привести к a SecurityException будучи брошенным (в текущем потоке).

Эта группа потока отмечается как являющийся группой потока демона, если параметр true, и как не являющийся демоном распараллеливают группу, если параметр false.

20.21.16 public int threadsCount()

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

20.21.17 public int allThreadsCount()

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

20.21.18 public int groupsCount()

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

20.21.19 public int allGroupsCount()

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

20.21.20 public Thread[] threads()

Этот метод возвращает недавно создаваемый массив, содержащий Thread объекты для всех потоков, которые непосредственно принадлежат этой группе потока.

20.21.21 public Thread[] allThreads()

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

20.21.22 public ThreadGroup[] groups()

Этот метод возвращает недавно создаваемый массив, содержащий ThreadGroup объекты для всех групп потока, которые непосредственно принадлежат этой группе потока.

20.21.23 public ThreadGroup[] allGroups()

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

20.21.24 public int activeCount()

[Этот метод осуждается для использования в новом коде после того, как версия 1.1 Java становится доступной. Используйте эквивалентный метод allThreadsCount вместо этого.]

20.21.25 public int activeGroupCount()

[Этот метод осуждается для использования в новом коде после того, как версия 1.1 Java становится доступной. Используйте эквивалентный метод allGroupsCount вместо этого.]

20.21.26 public int enumerate(Thread list[])

[Этот метод осуждается для использования в новом коде после того, как версия 1.1 Java становится доступной. Используйте метод allThreads вместо этого.]

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

[Этот метод осуждается для использования в новом коде после того, как версия 1.1 Java становится доступной. Используйте метод threads или allThreads вместо этого.]

20.21.28 public int enumerate(ThreadGroup list[])

[Этот метод осуждается для использования в новом коде после того, как версия 1.1 Java становится доступной. Используйте метод allGroups вместо этого.]

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

[Этот метод осуждается для использования в новом коде после того, как версия 1.1 Java становится доступной. Используйте метод groups или allGroups вместо этого.]

20.21.30 public void list()

Этот метод печатает подробное описание этой группы потока к потоку вывода System.out (§20.18.2). Это предназначается как удобная утилита для того, чтобы отладить.

Вывод является серией строк; каждая строка содержит некоторые пробелы (для добавления отступа) сопровождаемый toString представление одного потока (§20.20.11) или одна группа потока (§20.21.3).

Первая строка дает toString представление для этой группы потока, без пробелов добавления отступа. Следующие строки тогда сгенерированы рекурсивным правилом: всякий раз, когда строка печатается для группового Г потока с n ведущие пробелы, это сразу сопровождалось одной строкой для каждого потока, который непосредственно принадлежит Г с пробелами добавления отступа; тогда одна строка печатается для каждой группы потока, которая непосредственно принадлежит Г, с пробелами добавления отступа, используя рекурсивный случай.

20.21.31 public void uncaughtException(Thread t, Throwable e)

Общий контракт uncaughtException это, это вызывают всякий раз, когда поток, который принадлежит непосредственно этой группе потока, умирает, потому что исключение было добавлено, что поток и не поймал. Параметры Thread объект для рассматриваемого потока и Throwable объект, который был брошен. uncaughtException метод может тогда принять любые соответствующие меры.

Звонок uncaughtException выполняется потоком, который был не в состоянии поймать исключение, таким образом, t текущий поток. Звонок uncaughtException последнее действие потока прежде, чем это умрет. Если звонок uncaughtException непосредственно результаты в (непойманном) исключении, этот факт игнорируется, и поток просто продолжает умирать.

Метод uncaughtException определенный классом ThreadGroup предпринимает одни из двух мер. Если у этой группы потока есть родительская группа потока, то этот метод вызывается для той родительской группы потока с теми же самыми параметрами. Если эта группа потока является системной группой потока (у которого нет никакого родителя), то, если исключение e не экземпляр ThreadDeath (§20.22), трассировка стека (§20.22.6) для e печатается на потоке вывода ошибок, который является значением поля System.err (§20.18.3).

Подклассы ThreadGroup может переопределить uncaughtException метод.


Содержание | Предыдущий | Следующий | Индекс

Спецификация языка Java (HTML, сгенерированный Блинчиком "сюзет" Pelouch 24 февраля 1998)
Авторское право © Sun Microsystems, Inc 1996 года. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к doug.kramer@sun.com

free hit counter