Bird
Raised Fist0
Spring Bootframework~10 mins

Scheduled tasks with @Scheduled in Spring Boot - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to schedule a method to run every 5 seconds.

Spring Boot
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class TaskScheduler {

    @Scheduled(fixedRate = [1])
    public void runTask() {
        System.out.println("Task executed");
    }
}
Drag options to blanks, or click blank then click option'
A"5s"
B5
C5000
D1000
Attempts:
3 left
💡 Hint
Common Mistakes
Using seconds instead of milliseconds
Using string values instead of numbers
2fill in blank
medium

Complete the code to schedule a method to run every day at 2:30 AM.

Spring Boot
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class DailyTask {

    @Scheduled(cron = [1])
    public void runDaily() {
        System.out.println("Daily task executed");
    }
}
Drag options to blanks, or click blank then click option'
A"0 30 2 * * ?"
B"0 2 30 * * ?"
C"30 2 * * *"
D"0 0 2 * * ?"
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing up minute and hour positions
Omitting seconds field
3fill in blank
hard

Fix the error in the code to enable scheduling in the Spring Boot application.

Spring Boot
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
[1]
public class MyApp {

    public static void main(String[] args) {
        SpringApplication.run(MyApp.class, args);
    }
}
Drag options to blanks, or click blank then click option'
A@EnableScheduling
B@Scheduled
C@Component
D@Configuration
Attempts:
3 left
💡 Hint
Common Mistakes
Using @Scheduled on the main class
Forgetting to enable scheduling
4fill in blank
hard

Fill both blanks to create a scheduled method that runs every minute and logs the current time.

Spring Boot
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.LocalTime;

@Component
public class ClockTask {

    @Scheduled(cron = [1])
    public void logTime() {
        System.out.println("Current time: " + LocalTime.[2]());
    }
}
Drag options to blanks, or click blank then click option'
A"0 * * * * ?"
B"fixedRate = 60000"
Cnow
Attempts:
3 left
💡 Hint
Common Mistakes
Using fixedRate with wrong value
Using incorrect LocalTime method
5fill in blank
hard

Fill all three blanks to create a scheduled task that runs every 10 seconds, prints a message, and uses a component annotation.

Spring Boot
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.[1].Component;

@[2]
public class MessageTask {

    @Scheduled(fixedRate = [3])
    public void printMessage() {
        System.out.println("Hello every 10 seconds");
    }
}
Drag options to blanks, or click blank then click option'
Astereotype
BComponent
C10000
DConfiguration
Attempts:
3 left
💡 Hint
Common Mistakes
Wrong import package
Using @Configuration instead of @Component
Wrong fixedRate value

Practice

(1/5)
1. What is the main purpose of the @Scheduled annotation in Spring Boot?
easy
A. To run a method automatically at fixed intervals or times
B. To mark a method as a REST endpoint
C. To inject dependencies into a class
D. To configure database connections

Solution

  1. Step 1: Understand the role of @Scheduled

    The @Scheduled annotation is used to mark methods that should run automatically on a schedule without manual calls.
  2. Step 2: Compare with other options

    Options A, C, and D relate to other Spring features like REST, dependency injection, and database setup, not scheduling.
  3. Final Answer:

    To run a method automatically at fixed intervals or times -> Option A
  4. Quick Check:

    @Scheduled = automatic method run [OK]
Hint: Remember: @Scheduled means automatic timed method run [OK]
Common Mistakes:
  • Confusing @Scheduled with REST or dependency injection annotations
  • Thinking @Scheduled configures databases
  • Assuming @Scheduled requires manual method calls
2. Which of the following is the correct way to schedule a method to run every 5 seconds using @Scheduled?
easy
A. @Scheduled(fixedDelay = 5000)
B. @Scheduled(rate = 5)
C. @Scheduled(cron = "0 */5 * * * *")
D. @Scheduled(fixedRate = 5000)

Solution

  1. Step 1: Understand fixedRate vs fixedDelay

    fixedRate runs the method every specified milliseconds regardless of method duration. fixedDelay waits after method finishes before next run.
  2. Step 2: Check the options

    @Scheduled(fixedRate = 5000) uses fixedRate = 5000 which means run every 5 seconds. @Scheduled(fixedDelay = 5000) uses fixedDelay which waits after method ends. @Scheduled(rate = 5) uses invalid attribute rate. @Scheduled(cron = "0 */5 * * * *") uses a cron expression which runs every 5 minutes.
  3. Final Answer:

    @Scheduled(fixedRate = 5000) -> Option D
  4. Quick Check:

    fixedRate = 5000 means every 5 seconds [OK]
Hint: Use fixedRate for exact interval runs in milliseconds [OK]
Common Mistakes:
  • Using 'rate' instead of 'fixedRate'
  • Confusing fixedDelay with fixedRate
  • Incorrect cron syntax for simple intervals
3. Given the code below, what will be printed and how often?
@Scheduled(fixedDelay = 3000)
public void printMessage() {
    System.out.println("Hello World");
}
medium
A. Method runs only once after 3 seconds delay
B. "Hello World" prints every 3 seconds regardless of method duration
C. "Hello World" prints every 3 seconds after method finishes
D. Code will cause a compilation error

Solution

  1. Step 1: Understand fixedDelay behavior

    fixedDelay = 3000 means the method runs, then waits 3 seconds after it finishes before running again.
  2. Step 2: Analyze the print output frequency

    Since the method prints "Hello World" each time it runs, it will print every 3 seconds after the previous run completes.
  3. Final Answer:

    "Hello World" prints every 3 seconds after method finishes -> Option C
  4. Quick Check:

    fixedDelay = wait after method ends [OK]
Hint: fixedDelay waits after method ends before next run [OK]
Common Mistakes:
  • Confusing fixedDelay with fixedRate
  • Thinking method runs only once
  • Assuming compilation error without reason
4. Identify the error in this scheduled task code:
@Scheduled(fixedRate = "5000")
public void task() {
    System.out.println("Running task");
}
medium
A. fixedRate value should be a number, not a string
B. Method must return a value
C. Missing @EnableScheduling annotation on class
D. Method name cannot be 'task'

Solution

  1. Step 1: Check fixedRate attribute type

    The fixedRate attribute expects a long number (milliseconds), not a string. Using quotes causes a syntax error.
  2. Step 2: Verify other options

    Method can be void, so no return needed. Missing @EnableScheduling is a configuration issue but not a syntax error here. Method name 'task' is valid.
  3. Final Answer:

    fixedRate value should be a number, not a string -> Option A
  4. Quick Check:

    fixedRate expects number, not string [OK]
Hint: fixedRate and fixedDelay need numbers, no quotes [OK]
Common Mistakes:
  • Putting quotes around fixedRate or fixedDelay values
  • Assuming method must return a value
  • Confusing configuration errors with syntax errors
5. You want a method to run every Monday at 8:30 AM using @Scheduled. Which cron expression is correct?
hard
A. @Scheduled(cron = "30 8 * * 1")
B. @Scheduled(cron = "0 30 8 ? * MON")
C. @Scheduled(cron = "0 8 30 * * MON")
D. @Scheduled(cron = "0 30 8 * * 1")

Solution

  1. Step 1: Understand cron format in Spring

    Spring cron has 6 fields: second, minute, hour, day of month, month, day of week.
  2. Step 2: Analyze each option

    @Scheduled(cron = "0 30 8 ? * MON"): "0 30 8 ? * MON" means at second 0, minute 30, hour 8, any day of month (?), any month (*), on Monday (MON). This matches 8:30 AM Monday.
    @Scheduled(cron = "30 8 * * 1") is missing seconds field and uses 5 fields.
    @Scheduled(cron = "0 8 30 * * MON") has hour and minute swapped.
    @Scheduled(cron = "0 30 8 * * 1") uses day of week as 1 which is Sunday in some systems, MON is clearer.
  3. Final Answer:

    @Scheduled(cron = "0 30 8 ? * MON") -> Option B
  4. Quick Check:

    Spring cron: sec min hour day month weekday [OK]
Hint: Spring cron has 6 fields; use '?' for day of month if using day of week [OK]
Common Mistakes:
  • Using 5-field cron instead of 6-field in Spring
  • Swapping hour and minute positions
  • Using numeric day of week without knowing system mapping
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard