w3resource

Java Scheduled Task Execution with ScheduledExecutorService


Write a Java program that uses the ScheduledExecutorService interface to schedule tasks for execution at a specified time or with a fixed delay.

Sample Solution:

Java Code:

import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class ScheduledExecutorExercise {

  public static void main(String[] args) {
    ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);

    // Schedule a task to run after a delay of 2 seconds
    executor.schedule(new Task(), 2, TimeUnit.SECONDS);

    // Schedule a task to run after a delay of 3 seconds and repeat every 5 seconds
    executor.scheduleAtFixedRate(new Task(), 3, 5, TimeUnit.SECONDS);

    // Wait for scheduled tasks to complete
    try {
      Thread.sleep(15000);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }

    // Shutdown the executor
    executor.shutdown();
  }

  static class Task implements Runnable {
    @Override
    public void run() {
      System.out.println("Task executed at: " + new Date());
    }
  }
}

Sample Output:

Task executed at: Wed Jul 15 08:25:12 IST 2020
Task executed at: Wed Jul 15 08:25:13 IST 2020
Task executed at: Wed Jul 15 08:25:18 IST 2020
Task executed at: Wed Jul 15 08:25:23 IST 2020

Explanation:

In the above exercise -

  • First, we create a ScheduledExecutorService using Executors.newScheduledThreadPool(1) to create a thread pool with a single worker thread.
  • Schedule a task to run after a delay of 2 seconds using the schedule() method. This task is executed only once.
  • Next schedule a task to run after a delay of 3 seconds and repeat every 5 seconds using the scheduleAtFixedRate() method. This task is executed repeatedly at a fixed rate.
  • To allow scheduled tasks to execute, we use Thread.sleep() to pause the main thread for 15 seconds.
  • Finally, we shutdown the executor using the shutdown() method to release its resources.

Flowchart:

Flowchart: Java Scheduled Task Execution with ScheduledExecutorService.
Flowchart: Java Scheduled Task Execution with ScheduledExecutorService.

For more Practice: Solve these Related Problems:

  • Write a Java program to schedule a periodic task using ScheduledExecutorService and cancel it after a fixed duration.
  • Write a Java program to schedule a one-time task with a delay using ScheduledExecutorService and reschedule it on completion.
  • Write a Java program to implement a dynamic interval task scheduler using ScheduledExecutorService that adjusts its delay based on task output.
  • Write a Java program to schedule multiple tasks with different fixed delays using ScheduledExecutorService and ensure proper shutdown.

Java Code Editor:

Improve this sample solution and post your code through Disqus

Previous: Asynchronous Task Execution in Java with Callable and Future.
Next: Parallel Recursive Task Execution in Java with ForkJoinPool.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.