Введение в жизненный цикл потока в 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. Вы также можете просмотреть наши другие предлагаемые статьи, чтобы узнать больше -
- Фреймворки на Java
- Звездные узоры на Яве
- Сортировка слиянием в Java
- Лучшие компиляторы Java
- Статический метод в PHP