Quartz中多个Trigger同时触发的问题

举例:在Quartz中,我添加了一个Job,同时又两个CronTrigger,一个是每个月31号,早上9点执行,另一个是每个月最后一天,早上9点执行。
这样由于有些31号就是最后一天,会导致同时被触发两次,这显示是不对的,不知有没有什么办法解决?

另:Job有个DisallowConcurrentExecution注解,该Job不能并发,但跟我说的这个又不是一个意思,我是希望不能同时触发,但是允许并发

按你这描述应该用一个CronTrigger就够了:每个月最后一天,早上9点执行;
另外一个:每个月31号,早上9点执行,可以不用了。31号(如果有的话)肯定就是最后一天了。
难道是我理解不对?

a). 实现有状态JOB只需要实现org.quartz.StatefulJob 接口即可,StatefulJob 接口仅仅是扩展了 Job 接口,未加入新的方法.

b). Job(无状态)和 StatefulJob 在框架中使用中存在两个关键差异。首先,JobDataMap 在每次执行之后重新持久化到 JobStore 中。这样就确保你对 Job 数据的改变直到下次执行仍然保持着。你可以在有状态 Job 中简单的通过 map 的 put() 方法来修改 JobDataMap.已存在的任何数据会被新的数据覆盖掉。你也能对无状态的 Job 这么做,但是因为对于无状态 Job 来说,JobDataMap 不会持久化,所以数据不会保存下来。

c). 两个或多个有状态的 JobDetail 实例不能并发执行。说的是你创建并注册了一个有状态 JobDetail 到 Scheduler 上。你还建立了两个 Trigger 来触发这个 Job:一个每五分钟触发,另一个也是每五分钏触发。假如这两个 Trigger 试图在同一时刻触发 Job,框架是不允许这种事情发生的。第二个 Trigger 一直会被阻塞直到第一个结束。