Java 如何延迟程序执行
Java how to delay a program execution
我有四个网络应用程序使用四个不同的文件来记录日志。在我的主应用程序(日志分析器)中,我执行这四个应用程序,然后我将读取生成的日志文件,但是在应用程序执行和日志生成之间存在延迟(大约 5 秒,取决于机器执行速度)。
我想做的是如何等待日志分析器执行,直到创建和更新所有这四个日志文件。现在我使用
来做到这一点
Thread.sleep(6000)
但是这个系统在一些执行率低的环境中失败了。我想通过不断检查四个文件是否已创建以及内容是否已创建来了解如何对此实施更好的解决方案。
您可以使用 file system watcher 监视目录并在触发特定事件时采取行动,而不是等待。
这将使您的应用程序不会不必要地等待或不会过早采取行动,当您提供固定时间段时就会发生这种情况。
您的日志分析器应该等待日志生成,而不是主动轮询。使用 join
:
The join method allows one thread to wait for the completion of
another. If t
is a Thread
object whose thread is currently executing,
t.join();
causes the current thread to pause execution until t
's
thread terminates.
我有四个网络应用程序使用四个不同的文件来记录日志。在我的主应用程序(日志分析器)中,我执行这四个应用程序,然后我将读取生成的日志文件,但是在应用程序执行和日志生成之间存在延迟(大约 5 秒,取决于机器执行速度)。
我想做的是如何等待日志分析器执行,直到创建和更新所有这四个日志文件。现在我使用
来做到这一点Thread.sleep(6000)
但是这个系统在一些执行率低的环境中失败了。我想通过不断检查四个文件是否已创建以及内容是否已创建来了解如何对此实施更好的解决方案。
您可以使用 file system watcher 监视目录并在触发特定事件时采取行动,而不是等待。
这将使您的应用程序不会不必要地等待或不会过早采取行动,当您提供固定时间段时就会发生这种情况。
您的日志分析器应该等待日志生成,而不是主动轮询。使用 join
:
The join method allows one thread to wait for the completion of another. If
t
is aThread
object whose thread is currently executing,t.join();
causes the current thread to pause execution until
t
's thread terminates.