Я пока не знаю, что это такое, но горю желанием изучить.
UPD: в общем, это всё про веб-приложения. А если надо в сервисе/демоне/службе одновременное/параллельное, то нужно что-то другое.
2018-08-30, MaxRokatansky, Java EE Concurrency API
https://habr.com/ru/companies/otus/articles/421809/
Интересуют вопросы:
1) в какой версии Java это появилось;
2) зачем оно нужно в принципе;
3) какими стандартами это описывается;
4) литература и статьи в интернете;
5) примеры какие-нибудь.
-------------------------------------------------------------
API ~> прикладной программный интерфейс (ППИ).
1) «Выход седьмой версии JavaEE сделал возможным запуск параллельных задач в Enterprise-контейнерах, предоставляя разработчику удобные средства и утилиты для работы с многозадачностью.»
Тут надо разузнать после (потом), какая это была дата, какая это версия JDK, тоже седьмая?
«JavaTM Platform, Enterprise Edition 1.4 or later.»
Ну да, из того, что седьмая очевидно вытекает 1.4...
1.4 это в драфте написано, а читать надо релиз спецификации:
https://jcp.org/aboutJava/communityproc … index.html
А сейчас этот код как поставляется - в составе JDK, или отдельной библиотекой?
jakarta.enterprise.concurrent это новое название для javax.enterprise.concurrent
Это изменение произошло с выходом Jakarta EE 9 (был переименован в в рамках перехода от Java EE к Jakarta EE)
2)
E: «There is commonly a need to perform application-level work concurrently or periodically using different threads of execution.»
Р: «Обычно возникает необходимость выполнять работу на уровне приложения одновременно или периодически, используя разные потоки выполнения.»
А почему она возникает? Только ли для того, чтобы использовать аппаратуру эффективнее, или зачем вообще? В web и так много запросов от разных пользователей, контейнер и так их разбросает по разным потокам и процессоры и так будут все использоваться.
«Когда несколько потоков операционной системы пытаются одновременно получить доступ к одному и тому же ресурсу, это может привести к состояниям гонки или другим проблемам.»
И чего, значит ли это что реализация этого ППИ потокобезопасная?
«web component container do not allow using common Java SE concurrency APIs such as java.util.concurrent.ThreadPoolExecutor, java.lang.Thread,java.util.concurrent.ScheduledThreadPoolExecutor or java.util.Timer directly.» (ц)
Не ясно:
- где (в каком документе) сказано, что web-контейнеры так не могут ("do not allow");
- почему они не могут.
3)
JSR 236
«provides a simple, standardized API for using concurrency from application components without compromising container integrity while still preserving the Java EE platform's fundamental benefits»
Точно ли это именно для Java EE или для Jakarta тоже сойдёт?
с переходом от Java EE к Jakarta EE, многие из этих концепций и API были перенесены и адаптированы для Jakarta EE
«предоставляет простой, стандартизированный прикладной программный интерфейс (ППИ) для компонентов приложения, позволяющий использовать многопроцессорность, многоядерность и/или аппаратные потоки, сохраняющий целостность контейнера, при этом сохраняя основные преимущества платформы»
А при чём тут контейнер вообще, просто в приложении можно это использовать?