|
Spec-Zone .ru
спецификации, руководства, описания, API
|
public class Thread extends Object implements Runnable
У каждого потока есть приоритет. Потоки с более высоким приоритетом выполняются в предпочтении к потокам с более низким приоритетом. Каждый поток может или не может также быть отмечен как демон. Когда код, работающий в некотором потоке, создает новое Thread объект, новый поток имеет свой приоритет первоначально набор, равный приоритету потока создания, и является потоком демона, если и только если поток создания является демоном.
Когда виртуальная машина Java запускает, обычно есть единственный поток недемона (который обычно вызывает названный метод main из некоторых определял class). Виртуальная машина Java продолжает выполнять потоки, пока любое из следующего не происходит:
exit метод class Runtime был вызван и менеджер безопасности разрешил работе выхода иметь место. run метод или выдавая исключение, которое распространяет вне run метод. Есть два способа создать новый поток выполнения. Нужно объявить, что class подкласс Thread. Этот подкласс должен переопределить run метод class Thread. Экземпляр подкласса может тогда быть выделен и запущен. Например, поток, который вычисляет начала, больше чем установленное значение, мог быть записан следующим образом:
class PrimeThread extends Thread {
long minPrime;
PrimeThread(long minPrime) {
this.minPrime = minPrime;
}
public void run() {
// compute primes larger than minPrime
. . .
}
}
Следующий код тогда создал бы поток и запустил бы его выполнение:
PrimeThread p = new PrimeThread(143);
p.start();
Другой способ создать поток состоит в том, чтобы объявить class, который реализует Runnable интерфейс. Тот class тогда реализует run метод. Экземпляр class может тогда быть выделен, передан как параметр, создавая Thread, и запускался. Тот же самый пример в этом другом стиле похож на следующее:
class PrimeRun implements Runnable {
long minPrime;
PrimeRun(long minPrime) {
this.minPrime = minPrime;
}
public void run() {
// compute primes larger than minPrime
. . .
}
}
Следующий код тогда создал бы поток и запустил бы его выполнение:
PrimeRun p = new PrimeRun(143);
new Thread(p).start();
У каждого потока есть имя в целях идентификации. Больше чем у одного потока может быть то же самое имя. Если имя не определяется, когда поток создается, новое имя сгенерировано для этого.
Если не указано иное, передача a null параметр конструктору или методу в этом class вызовет a NullPointerException быть брошенным.
Runnable, Runtime.exit(int), run(), stop()| Модификатор и Тип | Класс и Описание |
|---|---|
static class |
Поток. Государство
Состояние потока.
|
static interface |
Поток. UncaughtExceptionHandler
Интерфейс для обработчиков, вызванных, когда Thread резко завершается из-за непойманного исключения.
|
| Модификатор и Тип | Поле и Описание |
|---|---|
static int |
MAX_PRIORITY
Максимальный приоритет, который может иметь поток.
|
static int |
MIN_PRIORITY
Минимальный приоритет, который может иметь поток.
|
static int |
NORM_PRIORITY
Приоритет значения по умолчанию, который присваивается потоку.
|
| Конструктор и Описание |
|---|
Thread()
Выделяет новое
Thread объект. |
Thread(Runnable target)
Выделяет новое
Thread объект. |
Thread(Runnable target, String name)
Выделяет новое
Thread объект. |
Thread(String name)
Выделяет новое
Thread объект. |
Thread(ThreadGroup group, Runnable target)
Выделяет новое
Thread объект. |
Thread(ThreadGroup group, Runnable target, String name)
Выделяет новое
Thread возразите так, чтобы это имело target как его объект выполнения, имеет указанное name как его имя, и принадлежит группе потока, упомянутой group. |
Thread(ThreadGroup group, Runnable target, String name, long stackSize)
Выделяет новое
Thread возразите так, чтобы это имело target как его объект выполнения, имеет указанное name как его имя, и принадлежит группе потока, упомянутой group, и имеет указанный размер стека. |
Thread(ThreadGroup group, String name)
Выделяет новое
Thread объект. |
| Модификатор и Тип | Метод и Описание |
|---|---|
static int |
activeCount()
Возвращает оценку числа активных потоков в группе потока текущего потока и ее подгруппах.
|
void |
checkAccess()
Определяет, есть ли у в настоящий момент рабочего потока разрешение, чтобы изменить этот поток.
|
protected Object |
clone()
Броски CloneNotSupportedException как Поток не могут быть обоснованно клонированы.
|
int |
countStackFrames()
Осуждаемый.
Определение этого вызова зависит от
suspend(), который осуждается. Далее, результаты этого вызова никогда не были четко определены. |
static Thread |
currentThread()
Возвращает ссылку на в настоящий момент выполняющийся объект потока.
|
void |
destroy()
Осуждаемый.
Этот метод был первоначально разработан, чтобы уничтожить этот поток без любой уборки. Любые мониторы, которые это содержало, останутся заблокированными. Однако, метод никогда не реализовывался. Если, если бы должны были быть реализованы, это было бы склонным к мертвой блокировке очень способом
suspend(). Если целевой поток, сохраненный блокировкой, защищающей критический системный ресурс, когда это было уничтожено, никакой поток, мог когда-либо получать доступ к этому ресурсу снова. Если бы другой поток, когда-либо предпринимаемый, чтобы заблокировать этот ресурс, мертвая блокировка закончилась бы. Такие мертвые блокировки обычно проявляются как "замороженные" процессы. Для получения дополнительной информации см., Почему Thread.stop, Thread.suspend и Осуждаемый Thread.resume?. |
static void |
dumpStack()
Печатает трассировку стека текущего потока к стандартному потоку сообщений об ошибках.
|
static int |
enumerate(Thread[] tarray)
Копии в указанный массив каждый активный поток в группе потока текущего потока и ее подгруппах.
|
static Map<Thread,StackTraceElement[]> |
getAllStackTraces()
Возвращает карту трассировок стека для всех живых потоков.
|
ClassLoder |
getContextClassLoader()
Возвращает ClassLoder контекста для этого Потока.
|
static Thread.UncaughtExceptionHandler |
getDefaultUncaughtExceptionHandler()
Возвращает обработчик значения по умолчанию, вызванный, когда поток резко завершается из-за непойманного исключения.
|
long |
getId()
Возвращает идентификатор этого Потока.
|
Строка |
getName()
Возвраты имя этого потока.
|
int |
getPriority()
Возвраты приоритет этого потока.
|
StackTraceElement[] |
getStackTrace()
Возвращает массив микроэлементов стека, представляющих дамп стека этого потока.
|
Поток. Государство |
getState()
Возвращает состояние этого потока.
|
ThreadGroup |
getThreadGroup()
Возвращает группу потока, которой принадлежит этот поток.
|
Поток. UncaughtExceptionHandler |
getUncaughtExceptionHandler()
Возвращает обработчик, вызванный, когда этот поток резко завершается из-за непойманного исключения.
|
static boolean |
holdsLock(Object obj)
Возвраты true, если и только если текущий поток содержит монитор, соединяют указанный объект.
|
void |
interrupt()
Прерывания этот поток.
|
static boolean |
interrupted()
Тесты, был ли текущий поток прерван.
|
boolean |
isAlive()
Тесты, если этот поток жив.
|
boolean |
isDaemon()
Тесты, если этот поток является потоком демона.
|
boolean |
isInterrupted()
Тесты, был ли этот поток прерван.
|
void |
join()
Ожидает этого потока, чтобы умереть.
|
void |
join(long millis)
Ожидает самое большее
millis миллисекунды для этого потока, чтобы умереть. |
void |
join(long millis, int nanos)
Ожидает самое большее
millis миллисекунды плюс nanos наносекунды для этого потока, чтобы умереть. |
void |
resume()
Осуждаемый.
Этот метод существует исключительно для использования с
suspend(), который был осужден, потому что это склонное к мертвой блокировке. Для получения дополнительной информации см., Почему Thread.stop, Thread.suspend и Осуждаемый Thread.resume?. |
void |
run()
Если этот поток был создан, используя отдельное
Runnable выполненный объект, тогда это Runnable объект run метод вызывают; иначе, этот метод не делает ничего и возвратов. |
void |
setContextClassLoader(ClassLoader cl)
Устанавливает ClassLoder контекста для этого Потока.
|
void |
setDaemon(boolean on)
Марки этот поток или как поток демона или как пользовательский поток.
|
static void |
setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)
Установите обработчик значения по умолчанию, вызванный, когда поток резко завершается из-за непойманного исключения, и никакой другой обработчик не был определен для того потока.
|
void |
setName(String name)
Изменяет название этого потока, чтобы быть равным параметру
name. |
void |
setPriority(int newPriority)
Изменяет приоритет этого потока.
|
void |
setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)
Установите обработчик, вызванный, когда этот поток резко завершается из-за непойманного исключения.
|
static void |
sleep(long millis)
Заставляет в настоящий момент выполняющийся поток спать (временно прекращают выполнение) для конкретного количества миллисекунд согласно точности и точности системных таймеров и планировщиков.
|
static void |
sleep(long millis, int nanos)
Заставляет в настоящий момент выполняющийся поток спать (временно прекращают выполнение) для конкретного количества миллисекунд плюс конкретное количество наносекунд согласно точности и точности системных таймеров и планировщиков.
|
void |
start()
Причины этот поток, чтобы начать выполнение; виртуальная машина Java вызывает
run метод этого потока. |
void |
stop()
Осуждаемый.
Этот метод по сути опасен. Остановка потока с Thread.stop заставляет это разблокировать все мониторы, которые это заблокировало (как естественное следствие непроверенного
ThreadDeath исключение, распространяющее стек). Если какой-либо из объектов, ранее защищенных этими мониторами, был в непоследовательном состоянии, поврежденные объекты становятся видимыми к другим потокам, потенциально приводящим к произвольному поведению. Много использования stop должен быть заменен кодом, который просто изменяет некоторую переменную, чтобы указать, что целевой поток должен прекратить работать. Целевой поток должен регулярно проверять эту переменную, и возврат из его метода выполнения аккуратным способом, если переменная указывает, что это должно прекратить работать. Если целевой поток ожидает в течение многих длительных периодов (на условной переменной, например), interrupt метод должен использоваться, чтобы прервать ожидание. Для получения дополнительной информации см., Почему Thread.stop, Thread.suspend и Осуждаемый Thread.resume?. |
void |
stop(Throwable obj)
Осуждаемый.
Этот метод по сути опасен. См.
stop() для деталей. Дополнительная опасность этого метода состоит в том, что он может использоваться, чтобы генерировать исключения, которые целевой поток неподготовлен, чтобы обработать (включая проверенные исключения, которые не мог возможно выдать поток, было это не для этого метода). Для получения дополнительной информации см., Почему Thread.stop, Thread.suspend и Осуждаемый Thread.resume?. |
void |
suspend()
Осуждаемый.
Этот метод был осужден, поскольку это является по сути склонным к мертвой блокировке. Если целевой поток содержит блокировку на мониторе, защищающем критический системный ресурс, когда это приостанавливается, никакой поток не может получить доступ к этому ресурсу, пока целевой поток не возобновляется. Если поток, который возобновил бы целевой поток, пытается заблокировать этот монитор до вызова
resume, результаты мертвой блокировки. Такие мертвые блокировки обычно проявляются как "замороженные" процессы. Для получения дополнительной информации см., Почему Thread.stop, Thread.suspend и Осуждаемый Thread.resume?. |
Строка |
toString()
Возвращает строковое представление этого потока, включая имя потока, приоритет, и группу потока.
|
static void |
yield()
Подсказка к планировщику, что текущий поток готов привести к своему текущему использованию процессора.
|
public static final int MIN_PRIORITY
public static final int NORM_PRIORITY
public static final int MAX_PRIORITY
public Thread()
Thread объект. Этот конструктор имеет тот же самый эффект как Поток
(null, null, gname), где gname недавно сгенерированное имя. Автоматически сгенерированные имена имеют форму "Thread-"+n, где n является целым числом.public Thread(Runnable target)
Thread объект. Этот конструктор имеет тот же самый эффект как Поток
(null, target, gname), где gname недавно сгенерированное имя. Автоматически сгенерированные имена имеют форму "Thread-"+n, где n является целым числом.target - объект, чей run метод вызывается, когда этот поток запускается. Если null, это классы run метод ничего не делает.public Thread(ThreadGroup group, Runnable target)
Thread объект. Этот конструктор имеет тот же самый эффект как Поток
(group, target, gname) , где gname недавно сгенерированное имя. Автоматически сгенерированные имена имеют форму "Thread-"+n, где n является целым числом.group - группа потока. Если null и есть менеджер безопасности, группа определяется SecurityManager.getThreadGroup (). Если нет менеджера безопасности или SecurityManager.getThreadGroup() возвраты null, группа устанавливается в группу потока текущего потока.target - объект, чей run метод вызывается, когда этот поток запускается. Если null, метод выполнения этого потока вызывается.SecurityException - если текущий поток не может создать поток в указанной группе потокаpublic Thread(String name)
Thread объект. Этот конструктор имеет тот же самый эффект как Поток
(null, null, name).name - имя нового потокаpublic Thread(ThreadGroup group, String name)
Thread объект. Этот конструктор имеет тот же самый эффект как Поток
(group, null, name).group - группа потока. Если null и есть менеджер безопасности, группа определяется SecurityManager.getThreadGroup (). Если нет менеджера безопасности или SecurityManager.getThreadGroup() возвраты null, группа устанавливается в группу потока текущего потока.name - имя нового потокаSecurityException - если текущий поток не может создать поток в указанной группе потокаpublic Thread(Runnable target, String name)
Thread объект. Этот конструктор имеет тот же самый эффект как Поток
(null, target, name).target - объект, чей run метод вызывается, когда этот поток запускается. Если null, метод выполнения этого потока вызывается.name - имя нового потокаpublic Thread(ThreadGroup group, Runnable target, String name)
Thread возразите так, чтобы это имело target как его объект выполнения, имеет указанное name как его имя, и принадлежит группе потока, упомянутой group. Если есть менеджер безопасности, checkAccess метод вызывается с ThreadGroup как его параметр.
Кроме того, checkPermission метод вызывается с RuntimePermission("enableContextClassLoaderOverride") разрешение когда вызвано прямо или косвенно конструктором подкласса, который переопределяет getContextClassLoader или setContextClassLoader методы.
Приоритет недавно создаваемого потока устанавливается равный приоритету потока, создающего это, то есть, в настоящий момент рабочего потока. Метод setPriority может использоваться, чтобы изменить приоритет на новое значение.
Недавно создаваемый поток первоначально отмечается как являющийся потоком демона, если и только если поток, создающий его, в настоящий момент отмечается как поток демона. Метод setDaemon может использоваться, чтобы измениться, является ли поток демоном.
group - группа потока. Если null и есть менеджер безопасности, группа определяется SecurityManager.getThreadGroup (). Если нет менеджера безопасности или SecurityManager.getThreadGroup() возвраты null, группа устанавливается в группу потока текущего потока.target - объект, чей run метод вызывается, когда этот поток запускается. Если null, метод выполнения этого потока вызывается.name - имя нового потокаSecurityException - если текущий поток не может создать поток в указанной группе потока или не может переопределить контекст методы загрузчика class.public Thread(ThreadGroup group, Runnable target, String name, long stackSize)
Thread возразите так, чтобы это имело target как его объект выполнения, имеет указанное name как его имя, и принадлежит группе потока, упомянутой group, и имеет указанный размер стека. Этот конструктор идентичен Thread(ThreadGroup,Runnable,String) за исключением факта, что это позволяет размеру стека потока быть определенным. Размер стека является приблизительным количеством байтов адресного пространства, которое виртуальная машина должна выделить для стека этого потока. Эффект stackSize параметр, если таковые вообще имеются, является чрезвычайно зависимой платформой.
На некоторых платформах, определяя более высокое значение для stackSize параметр может позволить потоку достигать большей глубины рекурсии прежде, чем бросить a StackOverflowError. Точно так же определение нижнего значения может позволить большему числу потоков существовать одновременно, не бросая OutOfMemoryError (или другая внутренняя ошибка). Детали отношения между значением параметра stackSize и максимальным уровнем глубины и параллелизма рекурсии зависимы от платформы. На некоторых платформах, значении stackSize параметр не может иметь никакого эффекта вообще.
Виртуальная машина свободна обработать stackSize параметр как предложение. Если указанное значение необоснованно низко для платформы, виртуальная машина может вместо этого использовать некоторое специфичное для платформы минимальное значение; если указанное значение необоснованно высоко, виртуальная машина может вместо этого использовать некоторый специфичный для платформы максимум. Аналогично, виртуальная машина свободна округлить в большую сторону указанное значение или вниз поскольку это считает целесообразным (или проигнорировать это полностью).
Определение значения нуля для stackSize параметр заставит этого конструктора вести себя точно как Thread(ThreadGroup, Runnable, String) конструктор.
Из-за зависимой от платформы природы поведения этого конструктора, экстремальная забота должна быть осуществлена в ее использовании. Размер стека потока, необходимый, чтобы выполнить данное вычисление, вероятно, изменится от одной реализации JRE до другого. В свете этого изменения может требоваться осторожная настройка параметра размера стека, и настройка, возможно, должна быть повторена для каждой реализации JRE, на которой должно работать приложение.
Примечание реализации: разработчики платформы Java поощряются задокументировать поведение своей реализации относительно stackSize параметр.
group - группа потока. Если null и есть менеджер безопасности, группа определяется SecurityManager.getThreadGroup (). Если нет менеджера безопасности или SecurityManager.getThreadGroup() возвраты null, группа устанавливается в группу потока текущего потока.target - объект, чей run метод вызывается, когда этот поток запускается. Если null, метод выполнения этого потока вызывается.name - имя нового потокаstackSize - требуемый размер стека для нового потока, или нуль, чтобы указать, что этот параметр должен быть проигнорирован.SecurityException - если текущий поток не может создать поток в указанной группе потокаpublic static Thread currentThread()
public static void yield()
Урожай является эвристической попыткой улучшить относительную прогрессию между потоками, которые иначе сверхиспользовали бы ЦП. Его использование должно быть объединено с подробным профилированием и сравнительным тестированием, чтобы гарантировать, что это фактически имеет требуемый эффект.
Редко уместно использовать этот метод. Для отладки или тестирования целей, может быть полезно, где это может помочь воспроизвести ошибки из-за условий состязания. Это может также быть полезно, разрабатывая конструкции управления совместным выполнением, такие как те в java.util.concurrent.locks пакет.
public static void sleep(long millis)
throws InterruptedException
millis - отрезок времени, чтобы спать в миллисекундахIllegalArgumentException - если значение millis отрицательноInterruptedException - если какой-либо поток прервал текущий поток. Прерванное состояние текущего потока очищается, когда это исключение выдается.public static void sleep(long millis,
int nanos)
throws InterruptedException
millis - отрезок времени, чтобы спать в миллисекундахnanos - 0-999999 дополнительные наносекунды, чтобы спатьIllegalArgumentException - если значение millis отрицательно, или значение nanos не находится в диапазоне 0-999999InterruptedException - если какой-либо поток прервал текущий поток. Прерванное состояние текущего потока очищается, когда это исключение выдается.protected Object clone() throws CloneNotSupportedException
clone в class ObjectCloneNotSupportedException - всегдаCloneablepublic void start()
run метод этого потока. Результат состоит в том, что два потока работают одновременно: текущий поток (который возвращается из звонка start метод) и другой поток (который выполняет run метод).
Никогда не законно запустить поток не раз. В частности поток не может быть перезапущен, как только он завершил выполнение.
IllegalThreadStateException - если поток был уже запущен.run(), stop()public void run()
Runnable выполненный объект, тогда это Runnable объект run метод вызывают; иначе, этот метод не делает ничего и возвратов. Подклассы Thread должен переопределить этот метод.
run в интерфейсе Runnablestart(), stop(), Thread(ThreadGroup, Runnable, String)@Deprecated public final void stop()
ThreadDeath исключение, распространяющее стек). Если какой-либо из объектов, ранее защищенных этими мониторами, был в непоследовательном состоянии, поврежденные объекты становятся видимыми к другим потокам, потенциально приводящим к произвольному поведению. Много использования stop должен быть заменен кодом, который просто изменяет некоторую переменную, чтобы указать, что целевой поток должен прекратить работать. Целевой поток должен регулярно проверять эту переменную, и возврат из его метода выполнения аккуратным способом, если переменная указывает, что это должно прекратить работать. Если целевой поток ожидает в течение многих длительных периодов (на условной переменной, например), interrupt метод должен использоваться, чтобы прервать ожидание. Для получения дополнительной информации см., Почему Thread.stop, Thread.suspend и Осуждаемый Thread.resume?. Если есть установленный менеджер безопасности, checkAccess с методом вызывают this как его параметр. Это может привести к a SecurityException будучи повышенным (в текущем потоке).
Если этот поток отличается от текущего потока (то есть, текущий поток пытается остановить поток кроме себя), менеджер безопасности checkPermission метод (с a RuntimePermission("stopThread") параметр), вызывается, кроме того. Снова, это может привести к броску a SecurityException (в текущем потоке).
Поток, представленный этим потоком, вынуждается остановиться независимо от того, что это делает неправильно и бросить недавно создаваемый ThreadDeath возразите как исключение.
Разрешается остановить поток, который еще не был запущен. Если поток в конечном счете запускается, он сразу завершается.
Приложение не должно обычно пытаться поймать ThreadDeath если это не должно сделать некоторую экстраординарную работу уборки (отметьте что бросок ThreadDeath причины finally пункты try операторы, которые будут выполнены перед потоком официально, умирают). Если a catch пункт ловит a ThreadDeath объект, важно повторно бросить объект так, чтобы поток фактически умер.
Высокоуровневый обработчик ошибок, который реагирует на иначе непойманные исключения, не распечатывает сообщение или иначе уведомляет приложение, если непойманное исключение является экземпляром ThreadDeath.
SecurityException - если текущий поток не может изменить этот поток.interrupt(), checkAccess(), run(), start(), ThreadDeath, ThreadGroup.uncaughtException(Thread,Throwable), SecurityManager.checkAccess(Thread), SecurityManager.checkPermission(java.security.Permission)@Deprecated public final void stop(Throwable obj)
stop() для деталей. Дополнительная опасность этого метода состоит в том, что он может использоваться, чтобы генерировать исключения, которые целевой поток неподготовлен, чтобы обработать (включая проверенные исключения, которые не мог возможно выдать поток, было это не для этого метода). Для получения дополнительной информации см., Почему Thread.stop, Thread.suspend и Осуждаемый Thread.resume?. Если есть установленный менеджер безопасности, checkAccess метод этого потока вызывают, который может привести к a SecurityException будучи повышенным (в текущем потоке).
Если этот поток отличается от текущего потока (то есть, текущий поток пытается остановить поток кроме себя), или obj не экземпляр ThreadDeath, менеджер безопасности checkPermission метод (с RuntimePermission("stopThread") параметр), вызывается, кроме того. Снова, это может привести к броску a SecurityException (в текущем потоке).
Если параметр obj нуль, a NullPointerException бросается (в текущем потоке).
Поток, представленный этим потоком, вынуждается остановиться независимо от того, что это делает неправильно и бросить Throwable объект obj как исключение. Это - необычное действие, чтобы взять; обычно, stop метод, который не берет параметров, должен использоваться.
Разрешается остановить поток, который еще не был запущен. Если поток в конечном счете запускается, он сразу завершается.
obj - Throwable возражают, чтобы быть брошенными.SecurityException - если текущий поток не может изменить этот поток.NullPointerException - если obj является null.interrupt(), checkAccess(), run(), start(), stop(), SecurityManager.checkAccess(Thread), SecurityManager.checkPermission(java.security.Permission)public void interrupt()
Если текущий поток не прерывает себя, который всегда разрешается, checkAccess метод этого потока вызывается, который может вызвать a SecurityException быть брошенным.
Если этот поток блокируется в вызове wait(), wait(long), или wait(long, int) методы Object class, или join(), join(long), join(long, int), sleep(long), или sleep(long, int), методы этого class, тогда его состояние прерывания будет очищено, и он получит InterruptedException.
Если этот поток блокируется в работе ввода-вывода на прерывистый канал тогда канал будет закрыт, состояние прерывания потока будет установлено, и поток получит a ClosedByInterruptException.
Если этот поток блокируется в a Selector тогда состояние прерывания потока будет установлено, и оно сразу возвратится из работы выбора, возможно с ненулевым значением, так же, как если бы селектор wakeup метод был вызван.
Если ни одно из предыдущих условий не будет содержать тогда состояние прерывания этого потока, то будет установлен.
Прерывание потока, который не жив, не должно иметь никакого эффекта.
SecurityException - если текущий поток не может изменить этот потокpublic static boolean interrupted()
Прерывание потока, проигнорированное, потому что поток не был жив во время прерывания, будет отражено этим false возвращающего метода.
true если текущий поток был прерван; false иначе.isInterrupted()public boolean isInterrupted()
Прерывание потока, проигнорированное, потому что поток не был жив во время прерывания, будет отражено этим false возвращающего метода.
true если этот поток был прерван; false иначе.interrupted()@Deprecated public void destroy()
suspend(). Если целевой поток, сохраненный блокировкой, защищающей критический системный ресурс, когда это было уничтожено, никакой поток, мог когда-либо получать доступ к этому ресурсу снова. Если бы другой поток, когда-либо предпринимаемый, чтобы заблокировать этот ресурс, мертвая блокировка закончилась бы. Такие мертвые блокировки обычно проявляются как "замороженные" процессы. Для получения дополнительной информации см., Почему Thread.stop, Thread.suspend и Осуждаемый Thread.resume?.NoSuchMethodError.NoSuchMethodError - всегдаpublic final boolean isAlive()
true если этот поток жив; false иначе.@Deprecated public final void suspend()
resume, результаты мертвой блокировки. Такие мертвые блокировки обычно проявляются как "замороженные" процессы. Для получения дополнительной информации см., Почему Thread.stop, Thread.suspend и Осуждаемый Thread.resume?. Во-первых, checkAccess метод этого потока вызывают без параметров. Это может привести к броску a SecurityException (в текущем потоке).
Если поток жив, он приостанавливается и не делает дальнейших успехов, только после того как он возобновляется.
SecurityException - если текущий поток не может изменить этот поток.checkAccess()@Deprecated public final void resume()
suspend(), который был осужден, потому что это склонное к мертвой блокировке. Для получения дополнительной информации см., Почему Thread.stop, Thread.suspend и Осуждаемый Thread.resume?. Во-первых, checkAccess метод этого потока вызывают без параметров. Это может привести к броску a SecurityException (в текущем потоке).
Если поток жив, но приостанавливается, он возобновляется и разрешается сделать успехи в его выполнении.
SecurityException - если текущий поток не может изменить этот поток.checkAccess(), suspend()public final void setPriority(int newPriority)
Сначала checkAccess метод этого потока вызывают без параметров. Это может привести к броску a SecurityException.
Иначе, приоритет этого потока устанавливается в меньшие из указанных newPriority и максимальный разрешенный приоритет группы потока потока.
newPriority - приоритет установить этот поток вIllegalArgumentException - Если приоритет не находится в диапазоне MIN_PRIORITY к MAX_PRIORITY.SecurityException - если текущий поток не может изменить этот поток.getPriority(), checkAccess(), getThreadGroup(), MAX_PRIORITY, MIN_PRIORITY, ThreadGroup.getMaxPriority()public final int getPriority()
setPriority(int)public final void setName(String name)
name. Сначала checkAccess метод этого потока вызывают без параметров. Это может привести к броску a SecurityException.
name - новое имя для этого потока.SecurityException - если текущий поток не может изменить этот поток.getName(), checkAccess()public final String getName()
setName(String)public final ThreadGroup getThreadGroup()
public static int activeCount()
Возвращенное значение является только оценкой, потому что число потоков может измениться динамически, в то время как этот метод пересекает внутренние структуры данных, и мог бы влияться присутствием определенных системных потоков. Этот метод предназначается прежде всего для отладки и контроля целей.
public static int enumerate(Thread[] tarray)
ThreadGroup.enumerate(Thread[]) метод группы потока текущего потока. Приложение могло бы использовать activeCount метод, чтобы получить оценку того, насколько большой массив должен быть, однако если массив слишком короток, чтобы содержать все потоки, дополнительные потоки тихо игнорируются. Если является критическим получить каждый активный поток в группе потока текущего потока и ее подгруппах, invoker должен проверить, что возвращенное международное значение является строго меньше чем длина tarray.
Из-за свойственного состояния состязания в этом методе, рекомендуется, чтобы метод только использовался для отладки и контроля целей.
tarray - массив, в который можно поместить список потоковSecurityException - если ThreadGroup.checkAccess() решает, что текущий поток не может получить доступ к своей группе потока@Deprecated public int countStackFrames()
suspend(), который осуждается. Далее, результаты этого вызова никогда не были четко определены.IllegalThreadStateException - если этот поток не приостанавливается.public final void join(long millis)
throws InterruptedException
millis миллисекунды для этого потока, чтобы умереть. Тайм-аут 0 средства ожидать навсегда. Эта реализация использует цикл this.wait вызовы, обусловленные на this.isAlive. Поскольку поток завершается this.notifyAll метод вызывается. Этому рекомендуют это, приложения не используют wait, notify, или notifyAll на Thread экземпляры.
millis - время, чтобы ожидать в миллисекундахIllegalArgumentException - если значение millis отрицательноInterruptedException - если какой-либо поток прервал текущий поток. Прерванное состояние текущего потока очищается, когда это исключение выдается.public final void join(long millis,
int nanos)
throws InterruptedException
millis миллисекунды плюс nanos наносекунды для этого потока, чтобы умереть. Эта реализация использует цикл this.wait вызовы, обусловленные на this.isAlive. Поскольку поток завершается this.notifyAll метод вызывается. Этому рекомендуют это, приложения не используют wait, notify, или notifyAll на Thread экземпляры.
millis - время, чтобы ожидать в миллисекундахnanos - 0-999999 дополнительные наносекунды, чтобы ожидатьIllegalArgumentException - если значение millis отрицательно, или значение nanos не находится в диапазоне 0-999999InterruptedException - если какой-либо поток прервал текущий поток. Прерванное состояние текущего потока очищается, когда это исключение выдается.public final void join()
throws InterruptedException
Вызов этого метода ведет себя точно таким же образом как вызов
соединение(0)
InterruptedException - если какой-либо поток прервал текущий поток. Прерванное состояние текущего потока очищается, когда это исключение выдается.public static void dumpStack()
Throwable.printStackTrace()public final void setDaemon(boolean on)
Этот метод должен быть вызван прежде, чем поток запускается.
on - если true, метки этот поток как поток демонаIllegalThreadStateException - если этот поток является живойSecurityException - если checkAccess() решает, что текущий поток не может изменить этот потокpublic final boolean isDaemon()
true если этот поток является потоком демона; false иначе.setDaemon(boolean)public final void checkAccess()
Если есть менеджер безопасности, checkAccess метод вызывают с этим потоком как его параметр. Это может привести к броску a SecurityException.
SecurityException - если текущему потоку не позволяют получить доступ к этому потоку.SecurityManager.checkAccess(Thread)public String toString()
public ClassLoader getContextClassLoader()
Если менеджер безопасности присутствует, и загрузчик class invoker не null и не то же самое как или предок контекста загрузчик class, тогда этот метод вызывает менеджера безопасности checkPermission метод с a RuntimePermission("getClassLoader") разрешение, чтобы проверить, что извлечение контекста загрузчик class разрешается.
null указывая на систему загрузчик class (или, приводя это к сбою, начальная загрузка загрузчик class)SecurityException - если текущий поток не может получить ClassLoder контекстаpublic void setContextClassLoader(ClassLoader cl)
getContextClassLoader, кодировать выполнение в потоке, загружая классы и ресурсы. Если менеджер безопасности присутствует, checkPermission метод вызывается с a RuntimePermission("setContextClassLoader") разрешение, чтобы видеть, устанавливая ClassLoder контекста разрешается.
cl - ClassLoder контекста для этого Потока, или нуль, указывающий на систему загрузчик class (или, приводя это к сбою, начальная загрузка загрузчик class)SecurityException - если текущий поток не может установить ClassLoder контекстаpublic static boolean holdsLock(Object obj)
Этот метод разрабатывается, чтобы позволить программе утверждать, что текущий поток уже содержит указанную блокировку:
assert Thread.holdsLock(obj);
obj - объект, на котором можно протестировать владение блокировкиNullPointerException - если obj является nullpublic StackTraceElement[] getStackTrace()
Если есть менеджер безопасности, и этот поток не является текущим потоком, то метод checkPermission менеджера безопасности вызывают с разрешением RuntimePermission("getStackTrace"), чтобы видеть, ли нормально получать трассировку стека.
Некоторые виртуальные машины, при некоторых обстоятельствах, могут опустить один или более стековых фреймов от трассировки стека. В крайнем случае виртуальной машине, у которой нет никакой трассировочной информации стека относительно этого потока, разрешают возвратить массив нулевой длиной из этого метода.
SecurityException - если менеджер безопасности существует, и его метод checkPermission не позволяет получать трассировку стека потока.SecurityManager.checkPermission(java.security.Permission), RuntimePermission, Throwable.getStackTrace()public static Map<Thread,StackTraceElement[]> getAllStackTraces()
getStackTrace метод. Потоки могут выполняться, в то время как этот метод вызывают. Трассировка стека каждого потока только представляет снимок, и каждая трассировка стека может быть получена в различное время. Массив нулевой длиной будет возвращен в значении карты, если у виртуальной машины не будет никакой трассировочной информации стека о потоке.
Если есть менеджер безопасности, то метод checkPermission менеджера безопасности вызывают с разрешением RuntimePermission("getStackTrace") так же как разрешением RuntimePermission("modifyThreadGroup"), чтобы видеть, ли нормально получать трассировку стека всех потоков.
SecurityException - если менеджер безопасности существует, и его метод checkPermission не позволяет получать трассировку стека потока.getStackTrace(), SecurityManager.checkPermission(java.security.Permission), RuntimePermission, Throwable.getStackTrace()public long getId()
public Thread.State getState()
public static void setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)
Непойманной обработкой исключений управляет сначала поток, затем потоком ThreadGroup возразите и наконец значением по умолчанию непойманный обработчик исключений. Если у потока не будет явного непойманного набора обработчика исключений, и группа потока потока (включая родительские группы потока) не специализирует свой метод uncaughtException, то метод uncaughtException обработчика значения по умолчанию будет вызван.
Устанавливая значение по умолчанию непойманный обработчик исключений, приложение может изменить путь, которым непойманные исключения обрабатываются (такие как журналирование к определенному устройству, или файл) для тех потоков, которые уже приняли бы любое поведение "значения по умолчанию" обеспеченная система.
Отметьте, что значение по умолчанию, непойманный обработчик исключений не должен обычно подчиняться объекту ThreadGroup потока, поскольку это могло вызвать бесконечную рекурсию.
eh - объект использовать в качестве значения по умолчанию непойманный обработчик исключений. Если null тогда нет никакого обработчика значения по умолчанию.SecurityException - если менеджер безопасности присутствует, и он отрицает RuntimePermission ("setDefaultUncaughtExceptionHandler")setUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler), getUncaughtExceptionHandler(), ThreadGroup.uncaughtException(java.lang.Thread, java.lang.Throwable)public static Thread.UncaughtExceptionHandler getDefaultUncaughtExceptionHandler()
setDefaultUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler)public Thread.UncaughtExceptionHandler getUncaughtExceptionHandler()
public void setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)
Поток может взять полный контроль над тем, как это отвечает на непойманные исключения при наличии его непойманного обработчика исключений явно набор. Если никакой такой обработчик не устанавливается тогда действия объекта ThreadGroup потока как его обработчик.
eh - объект использовать в качестве непойманного обработчика исключений этого потока. Если у null тогда этот поток нет никакого явного обработчика.SecurityException - если текущему потоку не позволяют изменить этот поток.setDefaultUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler), ThreadGroup.uncaughtException(java.lang.Thread, java.lang.Throwable)
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92