In short .. This is the behavior of the work. Therefore, no matter how many triggers only one instance of a given IStatefulJob can have (job name, job group dictates the instance identifier), it starts simultaneously. Thus, there can be two instances of the same type of task, but not the tasks of the same name (name, group), if the task implements IStatefulJob.
If the trigger misses the time of its fire, because of this the misfire command comes into play. A trigger that skips the next fire because the previous call is still working decides what to do based on its instruction to skip skipping (see API and tutorial).
With the regular IJob, you have no guarantee as to how many tasks will be performed at the same time if you have several triggers for it and / or misfire. IJob is just a contract interface for invoking a job. Quartz.NET 2.0 will split the combined behavior of IStatefulJob into two separate attributes: DisallowConcurrentExecution and PersistJobDataAfterExecution.
Thus, you can combine the same job type (IStatefulJobs) with two definitions (different job names) and triggers with the corresponding skip instructions.
source share