JDK 28 получил стабильный API структурированного параллелизма

JDK 28 получил стабильный API структурированного параллелизма

Изображение: OpenAI

В JDK 28 API StructuredTaskScope для структурированного параллелизма стал стабильным без изменений по сравнению с последней предварительной версией в JDK 27, сообщает InfoQ. Разработчики библиотек и фреймворков смогут использовать его, не требуя от пользователей включать предварительные возможности Java.

API прошёл семь предварительных версий; это самый долгий такой цикл среди возможностей Project Loom. Релиз JDK 28 запланирован на март 2027 года.

StructuredTaskScope из пакета java.util.concurrent объединяет связанные подзадачи в одну группу. По умолчанию они работают в виртуальных потоках, а сбой одной отменяет остальные. При закрытии области выполнения API отменяет незавершённые подзадачи и ждёт завершения их потоков. Обычные ExecutorService и Future таких гарантий не дают: родительский метод может вернуть результат, пока подзадачи продолжают работать в фоне.

При одновременном сбое нескольких подзадач API не гарантирует, какую из ошибок получит вызывающий код. Документация обещает лишь, что исключение будет связано с одной из подзадач, завершившихся с ошибкой.

Для кода, который уже использует API из JDK 27, переход сводится к удалению --enable-preview из настроек компилятора, запуска тестов и скриптов запуска и пересборке проекта на сборке раннего доступа JDK 28, где это изменение уже есть. Менять код под новый API не требуется. Тем, кто переходит с JDK 26, правок больше: FailedException заменён на ExecutionException, в сигнатуры собственных Joiner добавлен параметр типа R_X, класс StructuredTaskScope.TimeoutException удалён (истечение срока теперь видно по причине исключения CancelledByTimeoutException), метода Joiner.awaitAll() больше нет, а обратный вызов onTimeout() заменён абстрактным методом timeout().

Сергей
Автор: Сергей
Пишу о кибербезопасности и информационных технологиях на простом и понятном языке
Комментарии:

Как мы обрабатываем данные: политика обработки персональных данных