Многопоточность в Java — учитесь на примерах

Опубликовано: 2022-06-23

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

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

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

Изучайте онлайн-курсы по разработке программного обеспечения в лучших университетах мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.

Оглавление

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

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

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

Потоки имеют разные стадии своего жизненного цикла. Они следующие:

  • Новый: поток начинает свой жизненный цикл как новый поток. Он остается на этом новом этапе до тех пор, пока программа не запустит поток.
  • Готовность к выполнению: рожденный поток переходит в стадию выполнения, когда его инициирует программа. На этом этапе поток начинает выполнять свою задачу.
  • Ожидание: это этап перехода, на котором поток ожидает, пока другой поток завершит свою задачу. Поток на стадии ожидания переключается на стадию выполнения после получения сигнала от других потоков.
  • Временное ожидание: это этап, на который исполняемый поток может перейти в течение определенного интервала времени. Потоки на этом этапе возвращаются к рабочему этапу в конце определенного интервала времени.
  • Мертвый: это последний этап жизненного цикла потока. Поток входит в эту стадию после завершения своей задачи.

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

  • Поскольку потоки в Java независимы, многопоточность Java не блокирует пользователей, и они могут выполнять множество операций одновременно.
  • Поскольку многопоточность в Java позволяет выполнять несколько операций, она экономит время и эффективна.
  • Программа может работать непрерывно, даже если ее часть перехвачена.
  • Это повышает производительность по сравнению с обычными параллельными программами, использующими несколько процессов.
  • Создание эффективных программ, максимально использующих процессорное время.
  • Значительно улучшает время отклика сложных приложений.
  • Требует меньше ресурсов по сравнению с традиционными параллельными программами.

Порядок приоритета потока

Операционная система определяет расписание выполнения потока на основе его приоритета. Приоритет потока определяется на основе значения его константы.

  • Константа 1 получает минимальный приоритет ( MIN_PRIORITY)
  • Константа 5 получает нормальный приоритет (NORM_PRIORITY)
  • Константа 10 получает максимальный приоритет (MAX_PRIORITY)

Популярные курсы и статьи по программной инженерии

Популярные программы
Программа Executive PG в разработке программного обеспечения - IIIT B Программа сертификации блокчейна — PURDUE Программа сертификации кибербезопасности - PURDUE MSC в области компьютерных наук - IIIT B
Другие популярные статьи
Зарплата облачного инженера в США в 2021-2022 гг. Заработная плата архитектора решений AWS в США Зарплата бэкенд-разработчика в США Зарплата Front End Developer в США
Заработная плата веб-разработчика в США Вопросы на собеседовании Scrum Master в 2022 году Как начать карьеру в сфере кибербезопасности в 2022 году? Варианты карьеры в США для студентов инженерных специальностей

Как создать поток в Java?

Потоки могут быть созданы в Java двумя способами:

  1. Расширение класса потока
  2. Реализация работающего интерфейса

Создание потока путем расширения класса потока

Несколько методов класса thread и их функции приведены ниже.

  • getName() : для получения имени потока
  • getPriority(): для получения приоритета потока
  • is Alive(): чтобы узнать, запущен ли поток
  • join(): дождитесь завершения потока
  • run() : точка входа в поток
  • sleep(): для приостановки потока на определенное временное окно.
  • start() : чтобы активировать поток с помощью его метода run().

Шаг 1 : Переопределите метод run(), указанный в классе потока. Это действует как точка входа для потока, и вся логика программы должна быть заключена в 4this.

Синтаксис метода run() следующий:

публичный запуск пустоты ( )

Шаг 2: Инициируйте объект потока с помощью метода start(), синтаксис которого — void start() .

Вот примеры многопоточной программы на Java:

Пример 1:

класс MultithreadingDemo расширяет Thread{

публичный недействительный запуск () {

System.out.println("Мой поток запущен.");

}

public static void main (String args []) {

MultithreadingDemo obj=new MultithreadingDemo();

объект.старт();

}

}

Вывод вышеуказанной программы будет:

Моя ветка работает.

Пример 2:

класс Count расширяет поток

{

Считать()

{

super("моя тема расширяется");

System.out.println("мой поток создан" + это);

Начало();

}

публичный недействительный запуск ()

{

пытаться

{

для (целое i=0;i<10;i++)

{

System.out.println("Распечатка счетчика" + i);

Thread.sleep(1000);

}

}

поймать (InterruptedException e)

{

System.out.println("мой поток был прерван");

}

System.out.println("Мой поток окончен");

}

}

класс Расширение Примера

{

public static void main (String args [])

{

Счетчик cnt = новый счетчик();

пытаться

{

пока(cnt.isAlive())

{

System.out.println("Основной поток будет жить, пока жив дочерний поток");

Thread.sleep(1500);

}

}

поймать (InterruptedException e)

{

System.out.println("Основной поток прерван");

}

System.out.println("Выполнение основного потока прекращено" );

}

}

Вывод вышеуказанной программы будет

мой поток созданThread[my runnable thread,5,main]

Основной поток будет жить до тех пор, пока не будет жить дочерний поток.

Печать счета 0

Печать счета 1

Основной поток будет жить до тех пор, пока не будет жить дочерний поток.

Печать счета 2

Основной поток будет жить до тех пор, пока не будет жить дочерний поток.

Печать счета 3

Печать счета 4

Основной поток будет жить до тех пор, пока не будет жить дочерний поток.

Печать счета 5

Основной поток будет жить до тех пор, пока не будет жить дочерний поток.

Печать счета 6

Печать счета 7

Основной поток будет жить до тех пор, пока не будет жить дочерний поток.

Печать счета 8

Основной поток будет жить до тех пор, пока не будет жить дочерний поток.

Печать счета 9

мой поток завершен

Выполнение основного потока завершено

Создание потока путем реализации интерфейса Runnable

При использовании этого метода необходимо выполнить три важных шага.

Шаг 1 : Метод run() должен быть реализован с помощью запускаемого интерфейса. Этот метод run() действует как точка входа для потока и должен содержать всю логику программы.

Синтаксис метода run():

публичный недействительный запуск ( )

Шаг 2: Объект потока должен быть активирован с помощью конструктора, приведенного ниже.

Thread(Runnable threadObj, String threadName);

Здесь threadObj действует как класс, реализующий работающий интерфейс, а имя потока — это имя, данное новому потоку.

Шаг 3: После создания объекта потока его можно инициировать с помощью метода start(), который выполняет метод run().

Синтаксис метода start() следующий.

недействительный старт();

Пример создания потока путем реализации запускаемого интерфейса можно посмотреть здесь .

Чтобы узнать больше о многопоточности Java и разработке программного обеспечения, мы рекомендуем зарегистрироваться в программе Executive Post Graduate Program в области разработки программного обеспечения , предлагаемой IIIT Bangalore совместно с upGrad.

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

Программа включает в себя отраслевые проекты, чтобы помочь кандидатам получить практический опыт и адекватную отраслевую информацию, чтобы сделать их обучение актуальным и практичным. Завершение программы вознаградит кандидатов желанной сертификацией IIIT B и статусом выпускников.

Программа поставляется с поддержкой размещения на 360 градусов от upGrad, которая затронула более 40 000 платных учащихся со всех уголков мира, чтобы сделать ситуацию еще лучше. У upGrad есть база учащихся из более чем 85 стран, что дает бесценную возможность иметь глобальную сеть сверстников для кандидатов.

В чем разница между многозадачностью и многопоточностью в Java?

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

Поддерживается ли множественное наследование в Java?

Язык программирования Java поддерживает множественное наследование — процесс, в котором класс реализует более одного интерфейса. Класс может иметь разные реализации метода (по умолчанию или статические) в интерфейсах. Множественное наследование в Java может быть реализовано только с помощью интерфейсов, а не классов, в отличие от языка C++.

Может ли многопоточность улучшить производительность Java?

Многопоточность повышает производительность Java, позволяя нескольким процессорам решать одну и ту же задачу. Это не только ускоряет процесс, но и помогает эффективно решать проблемы.