Java 有没有办法在cron作业第一次启动时只初始化一些属性/对象一次?
在下面的代码中,dataMigrator.loadProperties();和dataMigrator.init();执行一些初始化,我不想在下一次执行作业时再次执行此类初始化,因为它每10分钟运行一次。DataMigrator的某些对象的初始化只应执行一次。能做到吗Java 有没有办法在cron作业第一次启动时只初始化一些属性/对象一次?,java,cron,Java,Cron,在下面的代码中,dataMigrator.loadProperties();和dataMigrator.init();执行一些初始化,我不想在下一次执行作业时再次执行此类初始化,因为它每10分钟运行一次。DataMigrator的某些对象的初始化只应执行一次。能做到吗 import org.quartz.StatefulJob; public class DataMigratorJob implements StatefulJob { void init(DataMigrator da
import org.quartz.StatefulJob;
public class DataMigratorJob implements StatefulJob
{
void init(DataMigrator dataMigrator) {
dataMigrator.loadProperties();
dataMigrator.init(); //dataMigrator basic required objects will be initialized
}
public void execute(JobExecutionContext context)
throws JobExecutionException {
DataMigrator dataMigrator = new DataMigrator();
init(dataMigrator);
dataMigrator.run();
System.out.println("Hello Quartz!"+ new Date());
}
}
为什么你会在意呢?每次装载这样的东西似乎都很昂贵。为什么“似乎是”?除非它涉及大量I/O,否则您不必担心。与流行的观点相反,对象创建是廉价的。当然,初始化JVM本身的时间比创建对象的时间要多。您始终可以将该程序设置为守护程序,并使用
ScheduledExecutorService
代替。必须加载某些东西,这些对象的填充背后有巨大的逻辑,不必一次又一次地创建它们。在生产中,我们使用cron作业,因此我没有其他选择。