Spring Boot-Schedule a task with SpringBoot-Download Source Code

Hello everyone, today we will learn how to schedule tasks in Spring Boot using @Scheduled annotation. To schedule jobs in the spring boot application to run periodically, spring boot provides @EnableScheduling and @Scheduled annotations.

Add @EnableScheduling to Spring Boot Application class

Add @EnableScheduling annotation to your spring boot application class. @EnableScheduling is a Spring Context module annotation. It internally imports the SchedulingConfiguration via the @Import(SchedulingConfiguration.class) instruction

@SpringBootApplication
@EnableScheduling
public class KnowledgefactoryScheduler {

public static void main(String[] args) {
SpringApplication.run(KnowledgefactoryScheduler.class, args);
}
}

1. Scheduling a Task with Fixed Rate

You can schedule a method to be executed at a fixed interval by using fixedRate parameter in the @Scheduled annotation. In the following example, The annotated method will be executed every 3 seconds.
     
// Scheduling a Task with Fixed Rate
@Scheduled(fixedRate = 3000)
public void scheduleTaskWithFixedRate() {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
System.out.println("The Scheduled task with Fixed Rate:" +
sdf.format(cal.getTime()));
}

Output:

The scheduled task with Fixed Rate:22:09:42
The scheduled task with Fixed Rate:22:09:45
The scheduled task with Fixed Rate:22:09:48
The scheduled task with Fixed Rate:22:09:51

2. Scheduling a Task with Fixed Delay

You can execute a task with a fixed delay between the completion of the last invocation and the start of the next, using fixeddelay parameter.

The fixedDelay parameter counts the delay after the completion of the last invocation.

// Scheduling a Task with Fixed Delay
@Scheduled(fixedDelay = 3000)
public void scheduleTaskWithFixedDelay() {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
System.out.println("Scheduled task With with Fixed Delay:"
+ sdf.format(cal.getTime()));
try {
TimeUnit.SECONDS.sleep(5);
} catch (InterruptedException ex) {
throw new IllegalStateException(ex);
}
}

Since the task itself takes 5 seconds to complete and we have specified a delay of 3 seconds between the completion of the last invocation and the start of the next, there will be a delay of 8 seconds between each invocation -

Output:

Scheduled task With with Fixed Delay:22:16: 54
Scheduled task With with Fixed Delay:22:17: 02
Scheduled task With with Fixed Delay:22:17: 10

3. Scheduling a Task With Fixed Rate and Initial Delay

You can use initialDelay parameter with fixedRate and fixedDelay to delay the first execution of the task with the specified number of milliseconds.
In the following example, the first execution of the task will be delayed by 5 seconds and then it will be executed normally at a fixed interval of 3 seconds -

// Scheduling a Task With Fixed Rate and Initial Delay
@Scheduled(fixedRate = 3000, initialDelay = 6000)
public void scheduleTaskWithInitialDelay() {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
System.out.println("Scheduled task With Fixed Rate
and Initial Delay:" + sdf.format(cal.getTime()));
}

4. Scheduling a Task using Cron Expression

If the above simple parameters can not fulfill your needs, then you can use cron expressions to schedule the execution of your tasks.
Let us see some examples of cron expression by using the fields and specials characters combinations:
Every Christmas Day at midnight

// Scheduling a Task using Cron Expression: every Christmas Day at midnight
@Scheduled(cron = "0 0 0 25 12 ?")
public void scheduleTaskWithCronExpression() {
System.out.println("Scheduled Task using Cron
Expression:every Christmas Day at midnight");
}

Popular posts from this blog

Learn Java 8 streams with an example - print odd/even numbers from Array and List

Java Stream API - How to convert List of objects to another List of objects using Java streams?

Registration and Login with Spring Boot + Spring Security + Thymeleaf

Java, Spring Boot Mini Project - Library Management System - Download

ReactJS, Spring Boot JWT Authentication Example

Spring Boot + Mockito simple application with 100% code coverage

Top 5 Java ORM tools - 2024

Java - Blowfish Encryption and decryption Example

Spring boot video streaming example-HTML5

Google Cloud Storage + Spring Boot - File Upload, Download, and Delete