В отличие от многих других компьютерных языков, Java обеспечивает встроенную поддержку многопоточности. Многопоточность в Java состоит из двух или более частей, которые могут выполняться одновременно. Поток Java на самом деле является легковесным процессом.
Этот блог познакомит вас со всеми концепциями потоков Java, которые многим людям кажутся сложными в использовании и понимании. Итак, давайте начнем тогда, не так ли?
В этом блоге Java Thread я бы рассмотрел следующие темы:
- Что такое потоки в Java?
- Модель потока Java
- Многопоточность в Java
- Основной поток Java
- Как создать поток Java?
Вы можете просмотреть эту видеолекцию о Java Threads, где наш эксперт по обучению Java обсуждает все нюансы технологии.
Прежде чем мы перейдем к первой теме этого блога Java Thread, рассмотрим следующий пример:
Представьте себе приложение биржевого маклера с множеством сложных возможностей. Вот некоторые из его функций:
- Чтобы загрузить последние цены опционов на акции
- Проверить цены на предупреждения
- Анализировать исторические данные для компании XYZ
Это трудоемкие функции. В однопоточной среде выполнения эти действия выполняются одно за другим. Следующее действие может произойти только после завершения предыдущего.
Теперь, если исторический анализ занимает полчаса, а пользователь выбирает загрузку и последующую проверку, в результате предупреждение может прийти слишком поздно, чтобы покупать или продавать акции. Мы только что представили приложение, которое требует многопоточности. В идеале загрузка должна происходить в фоновом режиме (то есть в другом потоке). Таким образом, другие процессы могут происходить одновременно, так что, например, предупреждение может быть передано мгновенно. Все это время пользователь взаимодействует с другими частями приложения. Анализ также может выполняться в отдельном потоке, чтобы пользователь мог работать с остальной частью приложения, пока вычисляются результаты.
Здесь помогает поток Java. Давайте сначала разберемся с Java Thread:
Что такое потоки в Java?
Поток на самом деле является легковесным процессом. В отличие от многих других компьютерных языков, Java обеспечивает встроенную поддержку многопоточного программирования. Многопоточная программа состоит из двух или более частей, которые могут выполняться одновременно. Каждая часть такой программы называется потоком, и каждый поток определяет отдельный путь выполнения. Таким образом, многопоточность — это специализированная форма многозадачности.
Следующая концепция в этом блоге о потоках Java является неотъемлемой частью концепции потоков и многопоточности.
Модель потоков Java. Зачем использовать потоки в Java?
Система времени выполнения Java во многом зависит от потоков. Потоки уменьшают неэффективность, предотвращая потерю циклов ЦП.
Потоки существуют в нескольких состояниях. Ниже приведены эти состояния:
- Новый — когда мы создаем экземпляр класса Thread, поток находится в новом состоянии.
- Runnable —поток Java находится в рабочем состоянии.
- Приостановлено. Работающий поток может быть приостановлен, что временно приостанавливает его активность. Затем приостановленный поток можно возобновить, что позволит продолжить его с того места, где он остановился.
- Заблокировано — поток Java может быть заблокирован при ожидании ресурса.
- Завершен. Поток может быть прерван, что немедленно останавливает его выполнение в любой момент времени. После завершения потока его нельзя возобновить.
Итак, это все о состояниях Java Thread. Теперь давайте перейдем к самой важной теме потоков Java, то есть к классу потока и запускаемому интерфейсу. Мы обсудим это один за другим ниже.
Многопоточность в Java: как работают потоки Java?
Класс потока и работающий интерфейс
Многопоточная система Java построена на классе Thread, его методах и сопутствующем интерфейсе Runnable. Чтобы создать новый поток, ваша программа либо расширит Thread, либо реализует Runnable интерфейс.
Класс Thread определяет несколько методов, помогающих управлять потоками. В таблице ниже показано то же самое:
Теперь давайте посмотрим, как использовать поток, начинающийся с основного потока Java,который есть во всех программах Java.
Основной поток Java
Теперь давайте посмотрим, как использовать интерфейс Thread and Runnable для создания потоков и управления ими, начиная с основного потока Java, который есть во всех программах Java. Итак, давайте обсудим основную тему.
Почему основной поток так важен?
- Поскольку этот поток влияет на другие «дочерние» потоки
- Потому что он выполняет различные действия по выключению
- Он создается автоматически при запуске вашей программы.
Итак, это была основная тема. Давайте посмотрим, как мы можем создать java-поток?
Как создать поток Java?
Java позволяет создавать поток двумя способами:
Давайте посмотрим, как оба способа помогают в реализации потока Java.
Работающий интерфейс
Самый простой способ создать поток — создать класс, реализующий интерфейс Runnable.
Чтобы реализовать интерфейс Runnable, класс должен реализовать только один метод с именем run(), который объявлен следующим образом:
public void run( )
Внутри run() мы определим код, который составляет новый поток.
Пример:
public class MyClass implements Runnable {
public void run(){
System.out.println("MyClass running");
}
}
Чтобы выполнить метод run() потоком, передайте экземпляр MyClass потоку в его конструкторе (конструктор в Java — это блок кода, аналогичный методу, который вызывается, когда создается экземпляр объекта). Вот как это делается:
Thread t1 = new Thread(new MyClass ());
t1.start();
Когда поток запускается, он вызывает метод run() экземпляра MyClass вместо выполнения собственного метода run(). В приведенном выше примере будет напечатан текст ' MyClass running '.
Расширение потока Java
Второй способ создать поток — создать новый класс, который расширяет Thread, затем переопределить метод run(), а затем создать экземпляр этого класса. Метод run() — это то, что выполняется потоком после вызова start(). Вот пример создания подкласса Java Thread:
public class MyClass extends Thread {
public void run(){
System.out.println("MyClass running");
}
}
Чтобы создать и запустить указанный выше поток, вы можете сделать следующее:
MyClass t1 = new MyClass ();
T1.start();
Когда метод run() выполняется, он выводит текст ' MyClass running'.
До сих пор мы использовали только два потока: основной поток и один дочерний поток. Однако наша программа может воздействовать на столько потоков, сколько ей нужно. Давайте посмотрим, как мы можем создать несколько потоков.
Создание нескольких потоков
class MyThread implements Runnable {
String name;
Thread t;
MyThread (String thread){
name = threadname;
t = new Thread(this, name);
System.out.println("New thread: " + t);
t.start();
}
public void run() {
try {
for(int i = 5; i > 0; i--) {
System.out.println(name + ": " + i);
Thread.sleep(1000);
}
}catch (InterruptedException e) {
System.out.println(name + "Interrupted");
}
System.out.println(name + " exiting.");
}
}
class MultiThread {
public static void main(String args[]) {
new MyThread("One");
new MyThread("Two");
new NewThread("Three");
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
System.out.println("Main thread Interrupted");
}
System.out.println("Main thread exiting.");
}
}
} The output from this program is shown here: New thread: Thread[One,5,main] New thread: Thread[Two,5,main] New thread: Thread[Three,5,main] One: 5 Two: 5 Three: 5 One: 4 Two: 4 Three: 4 One: 3 Three: 3 Two: 3 One: 2 Three: 2 Two: 2 One: 1 Three: 1 Two: 1 One exiting. Two exiting. Three exiting. Main thread exiting.
Вот как работает многопоточность в java. На этом мы подошли к концу блога Java Thread.
На этом мы подошли к концу этой статьи. Я надеюсь, что вы поняли шаблоны проектирования Java, их типы, важность и их реализацию на некоторых примерах в реальном времени. Если вы хотите прочитать больше статей о самых популярных на рынке технологиях, таких как искусственный интеллект, Python, этический взлом, вы можете обратиться к официальному сайту Edureka.
Обратите внимание на другие статьи из этой серии, в которых объясняются другие различные аспекты Java.
5. Строка Java
6. Массив Java
8. Java-потоки
12. Учебник по Java
14. Java-программы
24. Аннотации в Java
26. Деревья в Java
30. 55 самых популярных вопросов на собеседовании по сервлетам
36. 50 главных вопросов на собеседовании по коллекциям Java, которые вам нужно знать
40. Главные вопросы и ответы на собеседованиях по MVC, которые вам нужно знать
42. Тупик в Java
Первоначально опубликовано на сайте ww.edureka.co 30 сентября 2021 г.