Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Основы параллелизма

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

Платформа Java всегда имела поддержку параллельного программирования, которая была основой для реализации многих сервисов, предлагаемых контейнерами Java EE. В Java SE 5 дополнительная высокоуровневая поддержка API для параллелизма была предоставлена ​​пакетом java.util.concurrent.

Потоки и процессы

Двумя основными понятиями параллелизма являются процессы и потоки (thread).

Процессы в основном связаны с приложениями, работающими в операционной системе (ОС). У любого процесса (в том числе у процесса JVM) есть определённые ресурсы времени выполнения для взаимодействия с ОС и распределения других ресурсов, таких как выделенная ему оперативная память. JVM — это типичный процесс.

Язык программирования и платформа Java используют в основном потоки.

Потоки разделяют некоторые функции с процессами, поскольку оба потребляют ресурсы ОС или среды выполнения. Но потоки легче создавать и они потребляют гораздо меньше ресурсов, чем процессы.

Поскольку потоки — очень легковесные объекты, любой современный процессор, имеющий пару ядер и несколько гигабайт оперативной памяти, может обрабатывать тысячи потоков в одном процессе JVM. Точное количество потоков будет зависеть от совокупных выходных данных процессора, ОС и оперативной памяти, а также от правильной настройки JVM.

Хотя параллельное программирование решает многие проблемы и может повысить производительность для большинства приложений, существует ряд ситуаций, когда несколько выполняемых объектов (потоки или процессы) могут вызвать серьёзные проблемы. Эти ситуации включают в себя следующее:

  • Тупики

  • "Голодание" потока

  • Параллельный доступ к общим ресурсам

  • Ситуации, когда программа генерирует неверные данные


Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)