Skip to content

Latest commit

 

History

History
59 lines (43 loc) · 5.98 KB

Threads.md

File metadata and controls

59 lines (43 loc) · 5.98 KB
title tags
Threads
Java, Basic, Thread, ThreadGroup

Потоки

Главный поток программы можно получить вызвав метод Thread.currentThread(). Многие методы требуют обработки исключения InterruptedException.

Методы из класса Thread

Метод Назначение
getName Возвращает имя потока
getPriority Получает приоритет потока исполнения
isAlive Определяет, выполняется ли поток
join Ожидает завершения потока исполнения
run Задает точку входа в поток исполнения
yield заставляет процессор переключиться на обработку других потоков системы
sleep Приостанавливает выполнение текущего! потока на заданное время
start Запускает поток исполнения, вызывая его метод run()
stop Аварийно завершает поток deprecated
interrupt Устанавливает значение переменной isInterrupted в true и выкидывает исключение InterruptedException

Приоритеты

Для работы с приоритетом потока есть методы getPriority и setPriority. Значения приоритета могут быть от 1 до 10. Приоритет потока позволяет планировщику потоков отдавать предпочтение определённым потокам и выделять им больше времени. Для значений приоритетов есть статические переменные MAX_PRIORITY, MIN_PRIORITY и NORM_PRIORITY.

Группы (ThreadGroup)

При создании потока можно указать в какой он будет группе. Если группа не указывается, то вероятнее он возьмётся из потока, который инициирует создание.

Демоны

В Java процесс завершается тогда, когда завершается последний его поток. Даже если метод main() уже завершился, но еще выполняются порожденные им потоки, система будет ждать их завершения.

Однако это правило не относится к особому виду потоков – демонам. Если завершился последний обычный поток процесса, и остались только потоки-демоны, то они будут принудительно завершены и выполнение процесса закончится. Чаще всего потоки-демоны используются для выполнения фоновых задач, обслуживающих процесс в течение его жизни.

Объявить поток демоном достаточно просто — нужно перед запуском потока вызвать его метод setDaemon(true); Проверить, является ли поток демоном, можно вызвав его метод boolean isDaemon();

Состояния

Чтобы получить текущее состояние потока нужно вызвать его метод getState().

Значение Состояние
BLOCKED Поток приостановил выполнение
NEW Поток ещё не начал выполнение
RUNNABLE Поток в настоящее время выполняется или начнёт выполняться, когда получит доступ к ЦП
TERMINATED Поток завершил выполнение
TIMES_WAITING Поток приостановил выполнение на определенный промежуток времени, например, после вызова метода sleep(), wait(time) или join(time)
WAITING Поток приостановил выполнение после вызова wait() или join()