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:
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.
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics