如何立即执行Java程序,然后使用定义的Job执行程序

问题描述

我试图立即执行Java程序,然后使用我在代码中定义的job(scheduler)执行程序,现在我的调度程序每天从9:00 AM到9:00 PM执行。 我该怎么办?

这是我的Java代码

public class FirstMainClassJob {
    
    private static Logger log = Logger.getLogger(FirstMainClassJob.class);
    
    static HelperUtl helperUtl = new HelperUtl();
    // Fire between 09AM and 09PM every day
    public static Trigger fireBetween9To9EveryDay() throws ParseException,SchedulerException,IOException {
        
        String jobTime=helperUtl.getProperty("CRON_JOB_TIME");
        
        log.info("Application running time is "+jobTime);

        JobDetail job1 = JobBuilder.newJob(GoogleDriveApiQuickstart.class).withIdentity("fireBetween9To9EveryDay","group1").build();

        Trigger trigger = TriggerBuilder.newTrigger().withIdentity("fireBetween9To9EveryDay","group1")
                .withSchedule(CronScheduleBuilder.cronSchedule("0 0 "+jobTime+" * * ?")).build();
        
        

        Scheduler scheduler1 = new StdSchedulerFactory().getScheduler();
        scheduler1.start();
        scheduler1.scheduleJob(job1,trigger);
        return trigger;
    }

    public static void main(String[] args) throws ParseException,IOException {
        FirstMainClassJob.fireBetween9To9EveryDay();
    }

解决方法

您可以使用

    Trigger trigger = TriggerBuilder.newTrigger().withIdentity("fireOnceAtStart","group1")
            .withSchedule(SimpleScheduleBuilder.simpleSchedule().withRepeatCount(1)).build();

一次执行一次。