Жизненный цикл Java потока. Состояние потока в Java

Жизненный цикл Java потока. Состояние потока в Java

Понимание жизненного цикла Java потока и состояния потока в Java являются одними из самых важных тем программирования в многопоточной среде.

В прошлом уроке мы узнали, как работать с Java Thread и познакомились с интерфейсом Runnable.

Состояние Java потока

На диаграмме ниже показаны различные состояния потока в Java. Обратите внимание, что мы можем создать поток в Java и запустить его, но как состояние потока меняется от Runnable в Running и в Blocked зависит от реализации системного планировщика потоков (Thread scheduler) и в Java нет полного контроля над этим процессом. На рисунке 1 показан этот процесс:

PrologisticComUa_Thread_Lifecycle_States

Рисунок 1 — Состояния потока в Java

1. Состояние потока: New

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

2. Состояние потока: Runnable

Когда мы вызываем метод start() созданного объекта Thread, его состояние изменяется на Runnable и управление потоком передается Планировщику потоков (Thread scheduler). Ли запустить эту нить мгновенно или сохранить его в работоспособный пула потоков перед запуском, это зависит от реализации ОС в планировщик потоков.

3. Состояние потока: Running

Когда поток будет запущен, его состояние изменится на Running. Планировщик потоков выбирает один поток из своего общего пула потоков и изменяет его состояние на Running. Сразу после этого процессор начинает выполнение этого потока. Во время выполнения состояние потока также может изменится на Runnable, Dead или Blocked.

4. Состояние потока: Blocked или Waiting

Поток может ждать другой поток для завершения своей работы, например, ждать освобождения ресурсов или ввода-вывода. В этом случае его состояние изменяется на Waiting. После того, как ожидание потока закончилось, его состояние изменяется на Runnable и он возвращается общий пул потоков.

5. Состояние потока: Dead

После того, как поток завершает выполнение, его состояние изменяется на Dead, то есть он отработал свое и уже не нужен.

Вот и все, что нужно знать о состояниях потока в Java и работе планировщика потоков (Thread scheduler)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *