2015-07-06 3 views
0

У меня четыре веб-приложения используют четыре разных файла для записи журналов. Из моего основного приложения (анализатор журналов) я выполняю эти четыре приложения, а затем собираюсь читать созданные файлы журналов, но между выполнением приложения и генерации журнала происходит отставание (около 5 секунд и зависит от скорости выполнения).Java как отложить выполнение программы

Что я хочу сделать, так это то, как ждать выполнения анализатора журнала, пока все эти четыре файла журнала не будут созданы и обновлены. Теперь я делаю это, используя

Thread.sleep(6000) 

но эта система не работает в некоторых средах с низкой скоростью выполнения. Я хочу получить представление о том, как реализовать лучшее решение для этого, постоянно проверяя, созданы ли четыре файла и создано контент.

+0

Я бы предложил, прочитал о шаблоне наблюдателя. его решить такие проблемы –

ответ

1

Вместо того, чтобы ждать, вы можете использовать file system watcher, чтобы посмотреть каталог и принять меры, когда определенное событие было уволено.

Это позволит вашим приложениям не ждать излишне или не принимать меры слишком рано, что и происходит, когда вы предоставляете фиксированный период времени.

+0

Спасибо за ответ, это было бы лучшим решением для этого. – Grant

0

Ваш анализатор журналов должен ждать генерации журнала, а не активно опроса. Используйте join:

Джойн метод позволяет один поток ждать завершения другого. Если t является Thread объект, поток выполняется в данный момент,

t.join(); 

вызывает текущий поток, чтобы приостановить выполнение до t «s поток не прекращается.

+0

Если я что-то не хватает, 4 приложения работают независимо друг от друга, а не как 4 потока. – npinti

+0

Да, четыре приложения запускаются независимо, а эти четыре приложения - это веб-приложения, работающие на сервере. – Grant

+0

@Grant Multithreading tag вводит меня в заблуждение. –

Смежные вопросы