Введение в жизненный цикл потока в Java

Поток переживает многочисленные фазы в жизненном цикле. Например, нить приходит в мир, начинается, бежит и после этого уходит. Следующая диаграмма объясняет полный жизненный цикл потока.

  • Thread Constructor создает поток через новое состояние.
  • Вызов метода begin в Thread может привести к состоянию runnable.
  • Планировщик потока относительно Java запускает этот поток, когда процессор получает.
  • Когда поток переходит в заблокированное состояние, он снова запускается, потому что возвращается в работоспособное состояние.
  • Если метод ожидания, называемый потоком, перейдет в режим ожидания состояния, он вскоре перейдет в работоспособное состояние после того, как станет уведомлением во всем Inform, а также методом notify all.
  • Поток заканчивается после завершения метода run.

Что такое тема?

Поток определяется на уровне операционной системы. И язык Java, как и все другие языки, использует, использует сервис, предоставляемый операционной системой. С точки зрения разработчика, поток - это набор инструкций, которые мы собираемся написать для нашего приложения и выполнить определенным образом. Само приложение может состоять из нескольких потоков. Различные потоки могут быть выполнены одновременно. JVM (виртуальная машина Java) работает с несколькими потоками. Есть темы для сборки мусора. Существуют темы для компилятора Just in Time и других технических тем.

Состояния жизненного цикла потока в Java

Ниже приведены различные состояния жизненного цикла потока в Java:

1. Новый: новый поток начинает свой жизненный цикл в новом состоянии. Он продолжает находиться в этом состоянии до того, как программа начинает поток. Кроме того, он известен как созданный поток.

2. Runnable: после того, как недавно созданный поток может начаться, поток превращается в runnable. Поток с этим состоянием считается выполняющим свой процесс.

3. Ожидание. Иногда поток переходит к ожиданию вокруг состояния, даже если поток ожидает выполнения другим потоком другого потока. Поток возвращается в состояние выполнения только в том случае, если дополнительный поток указывает на ожидающий поток, который будет продолжать выполняться.

4. Временное ожидание: работающий поток может легко выполнить определенное временное ожидание, пока состояние не получит определенный интервал времени. Поток с этим переходом состояния возвращается в работоспособное состояние, когда истекает этот интервал точек или происходит событие, которого он действительно ожидает.

5. Завершено: работающий поток попадает в состояние завершения, потому что он выполняет свою задачу или завершается.

Как создать тему в Java?

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

Итак, сначала мы создаем экземпляр Runnable. Существует только один метод для реализации, который называется методом run (). Это шаблон Java 7 для этого с экземпляром анонимного класса. Но мы также можем использовать лямбда-выражение для реализации Runnable, поскольку в интерфейсе Runnable есть только один метод.

Давайте создавать темы на очень простых примерах

Мы увидим, что может пойти не так с условием гонки, которое связано с несинхронизированным кодом, который должен быть синхронизирован, и мы собираемся исправить наш код, используя синхронизацию. Этот первый пример очень прост, он очень простой. Это просто создание задачи.

Выход:

Задача является экземпляром интерфейса Runnable, назовем его runnable, и мы можем реализовать этот интерфейс с помощью лямбда-выражения. Эта задача передается новому потоку и выполняется в контексте этого потока. Итак, мы просто собираемся распечатать имя потока, который выполняет эту задачу. Я работаю в… Thread.currentThread () - это статический метод класса Thread, который возвращает поток, выполняющий текущую задачу. И нам просто нужно вызвать getName () для этого объекта потока, чтобы вернуть имя потока. Затем после того, как мы создадим экземпляр Thread, t = new Thread. Передача этого runnable в качестве параметра. Так что этот поток собирается выполнить этот кусок кода. И запустить его. t.start () это метод start (), который нам нужно вызвать. То, что мы также можем сделать, это дать явное имя этого потока, используя t.setName («Мой поток»). И теперь мы можем выполнить этот код. Теперь вместо вызова метода start () мы вызываем метод run (), и если мы запускаем этот код, проблема заключается в том, что задача выполняется правильно, но она не выполняется в созданном нами потоке. Он выполняется в главном потоке, который является потоком, выполняющим основной метод. Так что этот метод run () не должен вызываться, если мы хотим запустить новый поток.

Выход:

Методы жизненного цикла потока в Java

Методы, описанные просто Thread, представлены в табл.

Типы данныхИмена методов потока
строка

GetName ()

Вернуть название этой темы

ИНТполучить приоритет ()

Возвращает приоритет потока

логическийявляется живым()

Проверяет, работает ли этот поток

недействительнымприсоединиться()

Ожидает смерти этой ветки (прекращение)

недействительнымбегать()

Всякий раз, когда этот поток создавался с использованием отдельного объекта Runnable, после чего вызывается обычно метод run объекта Runnable; или же, этот метод не будет ничего, как, возвращает. Всякий раз, когда класс потока может быть расширен, а также, метод run () перезаписывается во время подкласса, тогда вызывается переопределенный метод run ().

недействительнымsetName ( имя строки )

Изменения имени с этим потоком, чтобы стать сопоставимым с именем аргумента.

статическая пустота

сон ( длинный миллис ) бросает прерванный / исключение
Вызывает выполнение текущей нити для отдыха
требуемое количество миллисекунд.
статическая пустотаsleep ( long millis, int nanos ) выдает InterruptedException

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

недействительнымНачало()

Запускает эти потоки, чтобы начать выполнение; виртуальная машина Java вызывает метод run этого потока.

статическая пустотаУступать()

Запускает текущий объект потока для кратковременной приостановки и разрешения выполнения дополнительных потоков.

статическая нитьcurrentThread ()

Возвращает упоминание о текущем выполняющемся объекте потока.

Вывод

  • Просто начать использовать темы, очень трудно понять.
  • Разработка классов, содержащих методы, которые могут быть безопасными для потоков, является сложной задачей.
  • Читайте: JavaDoc, чтобы получить класс java.lang.Thread

Рекомендуемая статья

Это было руководство по жизненному циклу потока в Java. Здесь мы обсуждаем что-нить? и различные состояния жизненного цикла потока наряду с созданием потоков в Java. Вы также можете просмотреть наши другие предлагаемые статьи, чтобы узнать больше -

  1. Фреймворки на Java
  2. Звездные узоры на Яве
  3. Сортировка слиянием в Java
  4. Лучшие компиляторы Java
  5. Статический метод в PHP