我有一个方法,它实际上是一个调度程序,它每隔一小时运行一个进程并每小时创建一个日志文件。
我想在应用程序生命周期中调用此方法一次,所以我从静态 block 中调用它。
但我觉得这不起作用,因为文件有时会在一小时内生成,有时会提前生成。我在某处听说静态 block 只执行一次是不是真的?
如果是,我该怎么办?
最佳答案
静态初始化程序 block 仅在类加载器加载类时执行一次。它们执行的时间与您的应用程序逻辑密切相关。更准确地说,不同的类加载器可能会加载您的类,因此静态 block 在理论上可以执行多次。
出于调度目的,请尝试使用开箱即用的调度程序库,例如 Quartz 调度程序。 ( http://quartz-scheduler.org ) 第一次使用时这似乎有点开销,但是这些库提供了您最终可能需要的高级功能。举个简单的例子:如果你的程序在一个小时内停止并重新启动怎么办?那么这个过程可能会在这个特定的时间内运行两次。使用 quartz ,您也可以处理这种情况。
关于java - 方法在其生命周期中应该只调用一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9941316/