У меня есть спокойное веб-приложение.Запрос может содержать большой набор данных.поэтому внутри логики остального веб-сервиса я хочу разделить обработку на 2 части.1-я часть получит данные, проверит данные и сохранит данные в базе данных.вторая часть действительно просматривает данные и применяет к ним бизнес-логику.Вторая часть может занять некоторое время, чтобы закончить.
, поэтому я думаю сделать 2-ю часть как Runnable и использовать ExecutorService, например,
`Executors.newCachedThreadPool()`
, поэтому я думаю, что у меня может быть один экземпляр для хранения этого экземпляра ExecutorService, когда 1-йпосле завершения он может отправить задание в ExecutorService, а ExecutorService выполнит вторую часть.Таким образом, ExecutorService будет содержать пул потоков, поток также можно использовать повторно.Поэтому в основном я использую ExecutorService для фоновой обработки
Но я не уверен насчет нескольких вопросов:
это правильный способ использования ExecutorService?Есть ли лучший способ сделать это?
Так как я уже на сервере веб-приложений (я использую Wildfly), могу ли я также использовать ExecutorService, как это?Почему-то мне кажется, что ExecutorService обычно используется либо на стороне сервера, либо в автономном приложении.
как и когда я инициализирую завершение работы ExecutorService?
Поскольку я 'Делая это как Singleton, я ожидаю, что этот экземпляр ExecutorService будет работать до тех пор, пока приложение не будет развернуто или сервер не завершит работу.Так когда и как может быть запущено shutdownNow ()?также, когда сервер выключен, даже задачи внутри ExecutorService не выполняются, я думаю, что у меня нет никакого контроля над ним.Могу ли я что-нибудь сделать, чтобы хоть что-то записать?
Спасибо, Хелен