Java Cron Jobs

Need to run a CRON Job in Java? Try out JobRunr for all your recurring java CRON jobs!

  • Ronald Dehuysser
  • November 10, 2021

Java Cron Jobs

What are CRON jobs?

CRON or crontab is a command-line utility to run certain tasks periodically at fixed times, dates, or intervals. CRON or crontab was originally created by AT&T Bell Laboratories in May 1975 and is by default now available on every OS. Most developers will know the Linux Crontab or the Windows Task Scheduler.

How are CRON jobs useful?

As a developer, you already might have encountered a business requirement where each morning at 10 o’clock a report needs to be sent via email. This is a typical example where a CRON job comes in handy: using a simple CRON expression (in this case 0 10 * * *), you can make sure the method is executed each morning at 10 o’clock.

How is a CRON expression created?

The CRON time string format exists of five fields that the CRON scheduler converts into a time interval. CRON then uses this interval to determine how often to run the associated task or method.

┌───────────── minute (0 - 59)
│ ┌───────────── hour (0 - 23)
│ │ ┌───────────── day of the month (1 - 31) or L for last day of the month
│ │ │ ┌───────────── month (1 - 12 or Jan/January - Dec/December)
│ │ │ │ ┌───────────── day of the week (0 - 6 or Sun/Sunday - Sat/Saturday)
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │
“* * * * *"

How to run a CRON job in Java?

Today, you have several possibilities to run CRON jobs in Java:

  • there is of course Quartz Scheduler
  • Spring framework has support for scheduled jobs using the @Scheduled annotation
  • and since JobRunr is now also in the picture, you can use JobRunr to run CRON jobs in Java.

What is the benefit of using JobRunr for Java CRON Jobs?

Using JobRunr for your CRON jobs brings some advantages:

  • you can easily create a CRON job in a 1-liner using JobRunr: BackgroundJob.scheduleRecurrently(Cron.daily(), () -> System.out.println("Easy!"));
  • if you are using Spring Framework, Micronaut or Quarkus: this is even easier. You can just add the JobRunr integration of your choice (jobrunr-spring-boot-starter, jobrunr-micronaut-feature or the jobrunr-quarkus-extension) and annotate the method that you want to schedule with the @Recurring annotation:
@Service
public class SampleService {

    @Recurring(id = "my-recurring-job", cron = "*/5 * * * *")
    @Job(name = "My recurring job")
    public void executeSampleJob() {
        // your business logic here
        // you can also conditionally enqueue a new job - better visibility in the dashboard
    }
}
  • it comes with a great UI where you have an overview of all your CRON jobs and where you check whether your CRON task / method finished successfully.
An overview of all recurring jobs with the ability to trigger or delete them
A detailed overview of a succeeded CRON job

The JobRunr Blog

Everything you need to know about
background processing

Explore technical deep-dives, product updates, and real-world examples to help you build, scale, and monitor your Java background jobs.

blog image

January 17, 2025

JobRunr & JobRunr Pro v7.4.0

New release packed with enhancements, compatibility updates, and bug fixes!

Read More Details
blog image

April 11, 2025

How JobRunr Builds Software That Gives Back to the Planet

At JobRunr, we believe building great software shouldn’t come at the cost of the planet. Here’s how we’re using our profits, and platform to leave the world better than we found it.

Read More Details
blog image

January 18, 2024

More than 15.000 trees 🌳 planted!

Buy JobRunr Pro and plant trees!

Read More Details
call to action

Ready to build reliable background jobs?

You focus on your business logic. We’ll take care of scheduling your background jobs reliably.

Get Started with JobRunr