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

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

Приложение Java — это один процесс, и в этом приложении мы можем создать несколько потоков для достижения параллелизма в программе Java.

Приложение, работающее в системе, может иметь несколько экземпляров, и их обычно называют приложениями с несколькими документами. Эти экземпляры приложения называются процессами. Каждому из этих процессов назначается поток.

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

«Этот метод одновременного выполнения нескольких потоков называется многопоточностью».

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

В Java встроена поддержка многопоточности.

Многопоточность изображена на приведенной выше диаграмме. Как показано выше, внутри приложения одновременно выполняется несколько потоков (thread1, thread2 и thread3).

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

Потоки выполняются параллельно друг другу в многопоточных приложениях параллельным образом. Таким образом, многопоточность также является частью параллелизма в Java. Обратите внимание, что хотя потоков много, они совместно используют область памяти, тем самым экономя память. Кроме того, потоки могут мгновенно переключать контексты.

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

Ниже приведены некоторые из терминов, которые мы должны знать в отношении многопоточности, поскольку они часто используются здесь.

Многозадачность. В многозадачности выполнение нескольких задач одновременно.

Многопоточность.Многопоточность — это процесс одновременного выполнения нескольких потоков.

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

Параллельная обработка. Параллельная обработка — это метод, при котором несколько процессоров работают одновременно.

После обсуждения многопоточности возникает вопрос, зачем нам нужна многопоточность?

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

Многопоточность имеет различные преимущества, которые помогают нам в эффективном программировании.

Следующие пункты прояснят ситуацию.

(1) Эффективное использование однопроцессорных систем

Когда есть только один ЦП с одним потоком, время ЦП тратится впустую. Когда поток занят использованием других ресурсов, таких как ввод-вывод, ЦП остается бездействующим. Мы можем улучшить это и лучше использовать ЦП, используя многопоточные приложения.

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

(2) Эффективное использование систем с несколькими ЦП

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

(3) Улучшенный пользовательский опыт в отношении отзывчивости

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

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

Как реализовать параллелизм в Java

Класс, с помощью которого мы можем реализовать параллелизм в Java, — это класс java.lang.Thread. Этот класс Thread формирует основу параллелизма в программе Java.

У нас также есть этот интерфейс java.lang.Runnable, который может быть реализован классом Java для абстрагирования поведения потока. Для расширенной разработки приложений мы используем пакет java.util.concurrent, доступный, начиная с Java 1.5.

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

Что такое поток в Java

Один поток можно определить как наименьшую единицу обработки. В Java мы можем использовать класс Thread для создания потока в нашей программе.

Существует два типа потоков Java:

(1) Пользовательский поток: при первом запуске приложения создается пользовательский поток. Затем мы можем создать столько потоков пользователей и демонов в соответствии с нашими требованиями.

(2) Поток демона: потоки демона в основном используются в фоновом режиме и используются для таких задач, как очистка приложения и т. д.

Потоки минимизируют стоимость обслуживания приложения. Это также снижает нагрузку на приложение.

Пример одного потока показан ниже:

public class Main{

public static void main (String [] args){

System.out.println("Hi, I am a thread");

}

}

Вышеупомянутая программа отобразит «Привет, я поток», так как при запуске приложения создается пользовательский поток. В приведенном выше примере функция main является отправной точкой приложения и создает пользовательский поток.

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

На следующей диаграмме показан жизненный цикл потока… подробнее ››