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

Понимание Жизненного цикла потока в Java и Состояний потока очень важно при работе с потоками и программировании для многопоточной среды. Из нашего последнего учебника мы можем создать класс потока Java, реализуя интерфейс Runnable или расширяя класс Thread, но для запуска потока Java сначала нужно создать объект Thread и вызвать его метод start(), чтобы выполнить метод run() как поток.

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

На диаграмме ниже показаны различные состояния жизненного цикла потока в Java. Мы можем создать поток в Java и запустить его, но как изменяются состояния потока от Runnable к Running к Blocked зависит от реализации планировщика потоков ОС, и Java не имеет полного контроля над этим.

Новый

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

Runnable

Когда мы вызываем функцию start() на объекте Thread, его состояние изменяется на Runnable. Управление передается планировщику потоков для завершения его выполнения. Зависит ли запуск этого потока немедленно или он будет сохранен в пуле потоков Runnable до запуска, от реализации ОС планировщика потоков.

Running

Когда поток выполняется, его состояние изменяется на Running. Планировщик потоков выбирает один из потоков из пула потоков Runnable и изменяет его состояние на Running. Затем ЦП начинает выполнение этого потока. Поток может изменить состояние на Runnable, Dead или Blocked из состояния выполнения в зависимости от разделения времени, завершения потоком метода run() или ожидания некоторых ресурсов.

Blocked/Waiting

A thread can be waiting for other thread to finish using thread join or it can be waiting for some resources to available. For example producer consumer problem or waiter notifier implementation or IO resources, then it’s state is changed to Waiting. Once the thread wait state is over, it’s state is changed to Runnable and it’s moved back to runnable thread pool.

Dead

После завершения выполнения потока его состояние изменяется на Dead, и он считается неактивным. Вот различные состояния потока. Хорошо знать их и как поток меняет свое состояние. Вот и все, что касается жизненного цикла потока в Java.

Source:
https://www.digitalocean.com/community/tutorials/thread-life-cycle-in-java-thread-states-in-java