Найти в Дзене
JavaDocs

14 Параллелизм (Concurrency)

Ссылка https://docs.oracle.com/en/java/javase/21/core/concurrency.html API-интерфейсы параллелизма Java SE предоставляют мощную, расширяемую платформу высокопроизводительных утилит потоковой обработки, таких как пулы потоков и блокирующие очереди. Этот пакет освобождает программиста от необходимости создавать эти утилиты вручную, во многом аналогично тому, как Collections Framework создавал структуры данных. Кроме того, эти пакеты предоставляют низкоуровневые примитивы для продвинутого параллельного программирования. API-интерфейсы параллелизма, которые содержатся в пакете java.util.concurrent, представляют собой классы, предназначенные для использования в качестве строительных блоков при создании параллельных классов или приложений. Точно так же, как Collections упростили организацию данных в памяти и манипулирование ими, предоставляя реализации часто используемых структур данных, утилиты параллелизма упрощают разработку параллельных классов, предоставляя реализации стандартных блоков
Реализация потока
Реализация потока

Ссылка https://docs.oracle.com/en/java/javase/21/core/concurrency.html

API-интерфейсы параллелизма Java SE предоставляют мощную, расширяемую платформу высокопроизводительных утилит потоковой обработки, таких как пулы потоков и блокирующие очереди. Этот пакет освобождает программиста от необходимости создавать эти утилиты вручную, во многом аналогично тому, как Collections Framework создавал структуры данных. Кроме того, эти пакеты предоставляют низкоуровневые примитивы для продвинутого параллельного программирования. API-интерфейсы параллелизма, которые содержатся в пакете java.util.concurrent, представляют собой классы, предназначенные для использования в качестве строительных блоков при создании параллельных классов или приложений. Точно так же, как Collections упростили организацию данных в памяти и манипулирование ими, предоставляя реализации часто используемых структур данных, утилиты параллелизма упрощают разработку параллельных классов, предоставляя реализации стандартных блоков, обычно используемых в параллельных проектах. Утилиты параллелизма включают высокопроизводительный гибкий пул потоков; фреймворк для асинхронного выполнения задач; множество классов коллекций, оптимизированных для параллельного доступа; утилиты синхронизации, такие как подсчет семафоров; атомарные переменные; блокировки; и переменные условий. Использование утилит параллелизма вместо самостоятельной разработки таких компонентов, как пулы потоков, дает ряд преимуществ:
Снижение трудозатрат на программирование.
Проще использовать стандартный класс, чем разрабатывать его самостоятельно.
Повышенная производительность.
Реализации утилит параллелизма были разработаны и проверены экспертами по параллелизму и производительности; эти реализации, вероятно, будут более быстрыми и масштабируемыми, чем типичная реализация, даже для опытного разработчика.
Повышенная надежность.
Разработка параллельных классов затруднена. Низкоуровневые примитивы параллелизма, предоставляемые языком Java (synchronized, volatile, wait(), notify() notifyAll()), трудно использовать правильно, и ошибки с использованием этих средств может быть трудно обнаружить и отладить. Благодаря использованию стандартизированных, тщательно протестированных структурных блоков параллелизма устраняются многие потенциальные источники угроз потоковой передачи, такие как взаимоблокировка, "голодание", состояние гонки или чрезмерное переключение контекста. Утилиты параллелизма были тщательно проверены на предмет взаимоблокировки, "голодания" и состояние гонки.
Менее трудозатратная поддержка.
Программы, использующие стандартные библиотечные классы, легче понять и поддерживать, чем те, которые полагаются на сложные, доморощенные классы.
Более быстрое погружение в разработку.
Разработчики, скорее всего, уже разбираются в стандартных библиотечных классах, поэтому нет необходимости изучать API и поведение специальных параллельных компонентов. Кроме того, параллельные приложения проще отлаживать, когда они построены на надежных, хорошо протестированных компонентах.
Короче говоря, использование API-интерфейсов параллелизма для реализации параллельного приложения может помочь вашей программе стать более понятной, короткой, быстрой, надежной, масштабируемой, более простой в написании, чтении и обслуживании.

API-интерфейсы параллелизма включают следующее:

Таблица
Таблица
-3