Quartz: Job Scheduling in Java

Harry · 11 Sep 2026 · 9 views

What is Quartz?

Quartz is a full-featured job scheduler for Java. It can run jobs on cron-like schedules, fire a job a fixed number of times, persist jobs in a database and cluster across servers. Typical uses: reports at midnight, cleanup every hour, monthly invoices.

Quartz scheduler overview

Core Concepts

  • Job - the unit of work; implements org.quartz.Job with an execute() method.
  • Trigger - decides when a job fires (simple or cron).
  • Scheduler - the engine that wires jobs and triggers together.

A Simple Job

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class CleanupJob implements Job {
    public void execute(JobExecutionContext ctx) throws JobExecutionException {
        System.out.println("Running cleanup at " + new java.util.Date());
    }
}

Scheduling It

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();

JobDetail job = JobBuilder.newJob(CleanupJob.class)
    .withIdentity("cleanupJob", "maintenance")
    .build();

Trigger trigger = TriggerBuilder.newTrigger()
    .withIdentity("cleanupTrigger", "maintenance")
    .startNow()
    .withSchedule(CronScheduleBuilder.cronSchedule("0 0 2 * * ?")) // 2 AM daily
    .build();

scheduler.scheduleJob(job, trigger);

Simple Interval Triggers

Trigger everyHour = TriggerBuilder.newTrigger()
    .withIdentity("hourly")
    .startNow()
    .withSchedule(SimpleScheduleBuilder.simpleSchedule()
        .withIntervalInHours(1)
        .repeatForever())
    .build();

Key Points

  • Jobs hold logic; triggers hold the schedule.
  • Cron expression sec min hour day month weekday year?; the ? stands for no specific value.
  • Always call scheduler.start() before scheduling, and shutdown() when done.
Share this post:

Comments (0)

Please login or register to comment.