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.
Хотя параллельное программирование решает многие проблемы и может повысить производительность для большинства приложений, существует ряд ситуаций, когда несколько выполняемых объектов (потоки или процессы) могут вызвать серьёзные проблемы. Эти ситуации включают в себя следующее:
Тупики
"Голодание" потока
Параллельный доступ к общим ресурсам
Ситуации, когда программа генерирует неверные данные
Назад | Вперёд | Содержание |