Java 有没有办法在cron作业第一次启动时只初始化一些属性/对象一次?

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

在下面的代码中,dataMigrator.loadProperties();和dataMigrator.init();执行一些初始化,我不想在下一次执行作业时再次执行此类初始化,因为它每10分钟运行一次。DataMigrator的某些对象的初始化只应执行一次。能做到吗

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作业,因此我没有其他选择。