В нынешнем поколении компьютеры выполняют несколько задач одновременно, что экономит время при выполнении нескольких задач. Таким образом, в Java IDE мы можем выполнять несколько программ одновременно, что экономит время при выполнении нескольких программ. В Java эта концепция известна как многопоточность.

Что такое многопоточность?

В Java многопоточность — это процесс одновременного выполнения двух или более потоков программы для максимального использования ЦП. Поток в java — это легковесный подпроцесс внутри процесса.

В Java жизненный цикл потока содержит пять состояний, и жизненный цикл управляется виртуальной машиной Java (JVM). Эти состояния:

  1. Новый
  2. Запускаемый
  3. Бег
  4. Не работает (заблокировано)
  5. Прекращено

Преимущества многопоточности в Java

  1. Многопоточность позволяет нам выполнять несколько операций вместе.
  2. Многопоточность экономит время при одновременном выполнении нескольких операций.
  3. В многопоточности потоки независимы друг от друга. Таким образом, если исключение возникает в каком-либо потоке, оно не влияет на другие потоки.

Потоки 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(), чтобы начать поток.

  1. Расширяя класс Thread:

Вывод

Интерфейс Runnable имеет только один метод run().

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

Путем реализации класса Runnable:

Вывод:

Когда программа вызывает метод запуска, создается новый поток, а затем выполняется указанный код в методе запуска и выполняется многопоточность.

Если мы вызовем метод run() напрямую, новый поток не будет создан, и метод run() будет выполняться как обычный вызов метода в самом текущем вызывающем потоке, и многопоточность не будет выполняться.

Мы не можем вызывать метод start() более одного раза.

Мы можем вызывать метод run() более одного раза.

Возврат:

Метод start() не возвращает никакого значения

Метод run() не возвращает никакого значения.

Вызов метода start():

Вывод:

Как видно из вывода, здесь имеет место многопоточность, потому что оба метода start() создают новые потоки и потоки выполняются одновременно.

Вызов метода run():

Вывод:

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

Вызов метода start() несколько раз:

Вывод:

Как видно из вывода, IllegalThreadStateException возникает из-за многократного вызова метода start().

Вызов метода run() несколько раз:

Вывод:

Как вы можете заметить в выводе, исключение не возникает, а многопоточность не происходит при многократном вызове метода run().

Вывод:

Многопоточность — это процесс одновременного выполнения двух или более потоков программы. Поток создается путем расширения класса Thread или реализации интерфейса Runnable.

Метод start() запускает выполнение нового потока, а затем вызывает метод run() в этом потоке.

Метод run() подобен обычному методу, вы должны переопределить этот метод в классе.

Спасибо, что читаете наш блог…

Блог — Адитья Десаи| Шрея Деханкар | Джаеш Дешмукх | Пратамеш Деоре