Как иметь общие темы - PullRequest
0 голосов
/ 05 июля 2019

У меня есть 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) {
        }
    }
}
...