У меня есть API (javaee / wildfly) с несколькими такими конечными точками (я использовал только две, но в итоге их будет больше):
- Доступ пользователя к конечной точке A и триггеру: поток shortProcessA (запуск потока LongProcessA в фоновом режиме) -> shortProcessA заканчивается
- Пользовательский доступ к конечной точке B и триггеру: поток shortProcessB (триггерный поток longProcessB в фоновом режиме) -> shortProcessB заканчивается
Мой вопрос касается longProcessB, который должен запускаться только после завершения longProcessA и сохранять успешное состояние в БД
Моей первой мыслью было: использование цикла while longProcessB для ожидания успешного состояния longProcessA в БД ... но мне это не нравится ...
Я хотел бы больше о состоянии потока: longProcessB ждет, пока longProcessA скажет, что его процесс завершен, но возможно ли это?
EDIT:
ExecutorService executor = Executors.newSingleThreadExecutor();
Callable<Object> c = Executors.callable(new Task());
executor.invokeAll(Arrays.asList(c), 10, TimeUnit.SECONDS);
executor.shutdown();
Затем в моей Задаче (я установил имя Импорт в поток):
Thread thread = getThreadByName("Import");
if (thread!= null) {
while (thread.isAlive() == true) {
try {
Thread.sleep(100);
} catch (InterruptedException ignored) {
}
}
}