java quartz 跳过_Java Quartz预定作业 – 禁止并发执行Job

我正在使用Quartz Job执行特定任务.

我也在我的主应用程序类中安排它的执行,我想要完成的是不允许同时执行这个作业的实例.

因此,调度程序应仅在其先前实例完成时执行该作业.

这是我的Job类:

public class MainJob implements Job {

static Logger log = Logger.getLogger(MainJob.class.getName());

@Override

public void execute(JobExecutionContext arg0) throws JobExecutionException {

GlobalConfig cfg = new GlobalConfig();

ProcessDicomFiles processDicomFiles = new ProcessDicomFiles();

ProcessPdfReportFiles processPdf = new ProcessPdfReportFiles();

try {

log.info("1. ---- SCHEDULED JOB -- setStudiesReadyToProcess");

processDicomFiles.setStudiesReadyToProcess();

log.info("2. ---- SCHEDULED JOB --- distributeToStudies");

processDicomFiles.distributeToStudies(cfg.getAssocDir());

...

//process any incoming PDF file

log.info("11. ---- SCHEDULED JOB --- processPdfFolder");

processPdf.processPdfFolder();

} catch (Exception ex) {

Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.ERROR,null,ex);

}

log.info(">>>>>>>>>>> Scheduled Job has ended .... <<<<<<<<<<<<<<<<<<<

}

}

所以在我的应用程序的主类中,我正在启动调度程序:

...

//start Scheduler

try {

startScheduler();

} catch (SchedulerException ex) {

log.log(Level.INFO,ex);

}

...

public void startScheduler () throws SchedulerException {

//Creating scheduler factory and scheduler

factory = new StdSchedulerFactory();

scheduler = factory.getScheduler();

schedulerTimeWindow = config.getSchedulerTimeWindow();

JobDetailImpl jobDetail = new JobDetailImpl();

jobDetail.setName("First Job");

jobDetail.setJobClass(MainJob.class);

SimpleTriggerImpl simpleTrigger = new SimpleTriggerImpl();

simpleTrigger.setStartTime(new Date(System.currentTimeMillis() + 1000));

simpleTrigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);

simpleTrigger.setRepeatInterval(schedulerTimeWindow);

simpleTrigger.setName("FirstTrigger");

//Start scheduler

scheduler.start();

scheduler.scheduleJob(jobDetail,simpleTrigger);

}

我想阻止调度程序启动第二个MainJob实例,如果另一个仍在运行…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值