В нынешнем поколении компьютеры выполняют несколько задач одновременно, что экономит время при выполнении нескольких задач. Таким образом, в Java IDE мы можем выполнять несколько программ одновременно, что экономит время при выполнении нескольких программ. В Java эта концепция известна как многопоточность.
Что такое многопоточность?
В Java многопоточность — это процесс одновременного выполнения двух или более потоков программы для максимального использования ЦП. Поток в java — это легковесный подпроцесс внутри процесса.
В Java жизненный цикл потока содержит пять состояний, и жизненный цикл управляется виртуальной машиной Java (JVM). Эти состояния:
- Новый
- Запускаемый
- Бег
- Не работает (заблокировано)
- Прекращено
Преимущества многопоточности в Java
- Многопоточность позволяет нам выполнять несколько операций вместе.
- Многопоточность экономит время при одновременном выполнении нескольких операций.
- В многопоточности потоки независимы друг от друга. Таким образом, если исключение возникает в каком-либо потоке, оно не влияет на другие потоки.
Потоки Java создаются двумя способами:
1. Расширяя класс Thread
2. Внедрив Runnable
В обоих методах мы переопределяем метод run() и запускаем поток, вызывая метод start().
В классе Thread есть много методов, таких как start(), run(), sleep(), join(), getName() и т. д., но в этом блоге мы в основном сосредоточены на методах start() и run(). .
public void start():
Метод start() запускает выполнение нового потока, а затем вызывает метод run() в этом потоке.
public void run():
Метод run() создается, если поток был создан с использованием отдельного объекта запуска Runnable.
Если вы расширяете класс потока и создаете объект своего класса, то ваш объект класса будет рассматриваться как поток, и вы можете вызвать метод start(), чтобы начать поток.
- Расширяя класс Thread:
Вывод
Интерфейс Runnable имеет только один метод run().
Если вы реализуете работающий интерфейс и создаете объект своего класса, ваш объект класса не должен рассматриваться как поток, поэтому вам нужно создать отдельный объект класса потока, а затем вы можете вызвать метод start(), чтобы начать поток .
Путем реализации класса Runnable:
Вывод:
Когда программа вызывает метод запуска, создается новый поток, а затем выполняется указанный код в методе запуска и выполняется многопоточность.
Если мы вызовем метод run() напрямую, новый поток не будет создан, и метод run() будет выполняться как обычный вызов метода в самом текущем вызывающем потоке, и многопоточность не будет выполняться.
Мы не можем вызывать метод start() более одного раза.
Мы можем вызывать метод run() более одного раза.
Возврат:
Метод start() не возвращает никакого значения
Метод run() не возвращает никакого значения.
Вызов метода start():
Вывод:
Как видно из вывода, здесь имеет место многопоточность, потому что оба метода start() создают новые потоки и потоки выполняются одновременно.
Вызов метода run():
Вывод:
Как видно из вывода, многопоточность здесь отсутствует, потому что оба метода запуска обрабатываются текущим потоком (то есть основным), который обрабатывает их как обычные методы и выполняет в указанном порядке, а не одновременно.
Вызов метода start() несколько раз:
Вывод:
Как видно из вывода, IllegalThreadStateException возникает из-за многократного вызова метода start().
Вызов метода run() несколько раз:
Вывод:
Как вы можете заметить в выводе, исключение не возникает, а многопоточность не происходит при многократном вызове метода run().
Вывод:
Многопоточность — это процесс одновременного выполнения двух или более потоков программы. Поток создается путем расширения класса Thread или реализации интерфейса Runnable.
Метод start() запускает выполнение нового потока, а затем вызывает метод run() в этом потоке.
Метод run() подобен обычному методу, вы должны переопределить этот метод в классе.
Спасибо, что читаете наш блог…
Блог — Адитья Десаи| Шрея Деханкар | Джаеш Дешмукх | Пратамеш Деоре