I had a look at the docs and couldn't find anything about the expected behaviour of a method being annotated by multiple @Scheduled annotations, such as:

@Scheduled(cron = "...")
@Scheduled(initialDelay = ..., fixedDelay = ...)
public void launchTheDrones() {
    // ...
}

// or

@Scheduled(fixedRate = 10_000)
@Scheduled(fixedRate = 20_000)
public void launchTheCyborgs() {
    // ...
}

// or

@Scheduled(cron = "0 * * * * MON-FRI")
@Scheduled(cron = "0 * * * * MON-TUE")
public void launchTheShuttles() {
    // ...
}

I assume this depends on the task executor in use -- some are single threaded and only run the method once at any given point in time, but what if a ThreadPoolTaskExecutor with a core pool size > 1 is used?

Comment From: sbrannen

Good point. The documentation can be improved in that regard.

Comment From: rohitp27

@sbrannen Is this issue on the agenda for future releases? I can get on it.

Comment From: sbrannen

@sbrannen Is this issue on the agenda for future releases?

It's currently in the General Backlog, meaning that we do plan to address it at some point, but it is not currently assigned to a scheduled release.

I can get on it.

Sure, feel free to submit a PR.

Comment From: jhoeller

I've added the following to the documentation:

@Scheduled can be used as a repeatable annotation. If several scheduled declarations are found on the same method, each of them will be processed independently, with a separate trigger firing for each of them. As a consequence, such co-located schedules may overlap and execute multiple times in parallel or in immediate succession. Please make sure that your specified cron expressions etc do not accidentally overlap.