Skip to content

Yet another programming solutions log

Sample bits from programming for the future generations.

Technologies Technologies
  • Algorithms and Data Structures
  • Java Tutorials
  • JUnit Tutorial
  • MongoDB Tutorial
  • Quartz Scheduler Tutorial
  • Spock Framework Tutorial
  • Spring Framework
  • Bash Tutorial
  • Clojure Tutorial
  • Design Patterns
  • Developer’s Tools
  • Productivity
  • About
Expand Search Form

Quartz Scheduler start and shutdown

farenda 2016-05-17 0

Quartz Scheduler start

Quartz Scheduler is one of the most widely used Java libraries. In tutorial we’ll show how to create, start, and shutdown Quartz Scheduler in a Java program.

SchedulerFactor and StdSchedulerFactory

Quartz Scheduler can be created only by org.quartz.SchedulerFactory of which org.quartz.impl.StdSchedulerFactory is default implementation. It can be configured in different ways (mainly using quartz.properties file), but here we’ll use default configuration for clarity:

SchedulerFactory factory = new StdSchedulerFactory();
// Further initialization of SchedulerFactory...

The Scheduler

Having SchedulerFactory we can instantiate QuartzScheduler:

Scheduler scheduler = factory.getScheduler();

Notice that the getScheduler() method will throw org.quartz.SchedulerException, when there are problems with underlying scheduler.

The scheduler is instantiated, but it is not running, so it won’t do anything.

Starting Quartz Scheduler

At this point scheduler can be started:

scheduler.start();
System.out.println("Scheduler started? "
    + scheduler.isStarted());

Now we can work with Quartz Scheduler, which we will show in subsequent posts, but at this moment we’ll just print its basic information:

// print some info about the Scheduler:
System.out.println("Scheduler name: "
        + scheduler.getSchedulerName());
System.out.println("Scheduler instanceId: "
        + scheduler.getSchedulerInstanceId());

Shutting down the Quartz Scheduler

To finish work with Quartz Scheduler one should stop it from executing jobs and triggers. There are two shutdown methods to do that:

  • void shutdown() throws SchedulerException
    Is the same as shutdown(false).
  • void shutdown(boolean waitForJobsToComplete) throws SchedulerException
    When waitForJobsToComplete is true then the scheduler won’t return from this method until all jobs are completed.
boolean waitForJobsToComplete = true;
scheduler.shutdown(waitForJobsToComplete);
System.out.println("Scheduler shutdown? "
        + scheduler.isShutdown());

Note: after shutdown is called the scheduler cannot be restarted.

Complete Example

In the following code we create default Quartz Scheduler, start it, print its basic information, and shutdown, waiting for all jobs to complete:

package com.farenda.tutorial.quartz;

import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;

public class StartQuartzScheduler {

    public static void main(String[] args)
            throws SchedulerException {
        SchedulerFactory factory = new StdSchedulerFactory();
        Scheduler scheduler = factory.getScheduler();

        scheduler.start();
        System.out.println("Scheduler started? "
                + scheduler.isStarted());

        // print some info about the Scheduler
        System.out.println("Scheduler name: "
                + scheduler.getSchedulerName());
        System.out.println("Scheduler instanceId: "
                + scheduler.getSchedulerInstanceId());

        boolean waitForJobsToComplete = true;
        scheduler.shutdown(waitForJobsToComplete);
        System.out.println("Scheduler shutdown? "
                + scheduler.isShutdown());
    }
}

The above code produces the following output:

23:27:43.305 [main] INFO org.quartz.impl.StdSchedulerFactory - Using default implementation for ThreadExecutor
23:27:43.335 [main] INFO org.quartz.simpl.SimpleThreadPool - Job execution threads will use class loader of thread: main
23:27:43.526 [main] INFO org.quartz.core.SchedulerSignalerImpl - Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
23:27:43.526 [main] INFO org.quartz.core.QuartzScheduler - Quartz Scheduler v.2.2.3 created.
23:27:43.528 [main] INFO org.quartz.simpl.RAMJobStore - RAMJobStore initialized.
23:27:43.529 [main] INFO org.quartz.core.QuartzScheduler - Scheduler meta-data: Quartz Scheduler (v2.2.3) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED'
  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
  NOT STARTED.
  Currently in standby mode.
  Number of jobs executed: 0
  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
  Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.

23:27:43.529 [main] INFO org.quartz.impl.StdSchedulerFactory - Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties'
23:27:43.530 [main] INFO org.quartz.impl.StdSchedulerFactory - Quartz scheduler version: 2.2.3
23:27:43.530 [main] INFO org.quartz.core.QuartzScheduler - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
Scheduler started? true
Scheduler name: DefaultQuartzScheduler
23:27:43.530 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG org.quartz.core.QuartzSchedulerThread - batch acquisition of 0 triggers
Scheduler instanceId: NON_CLUSTERED
23:27:43.530 [main] INFO org.quartz.core.QuartzScheduler - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutting down.
23:27:43.530 [main] INFO org.quartz.core.QuartzScheduler - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
23:27:43.547 [main] DEBUG org.quartz.simpl.SimpleThreadPool - Shutting down threadpool...
23:27:43.852 [DefaultQuartzScheduler_Worker-1] DEBUG org.quartz.simpl.SimpleThreadPool - WorkerThread is shut down.
23:27:43.857 [DefaultQuartzScheduler_Worker-2] DEBUG org.quartz.simpl.SimpleThreadPool - WorkerThread is shut down.
23:27:43.872 [DefaultQuartzScheduler_Worker-3] DEBUG org.quartz.simpl.SimpleThreadPool - WorkerThread is shut down.
23:27:43.888 [DefaultQuartzScheduler_Worker-4] DEBUG org.quartz.simpl.SimpleThreadPool - WorkerThread is shut down.
23:27:43.889 [DefaultQuartzScheduler_Worker-5] DEBUG org.quartz.simpl.SimpleThreadPool - WorkerThread is shut down.
23:27:43.892 [DefaultQuartzScheduler_Worker-6] DEBUG org.quartz.simpl.SimpleThreadPool - WorkerThread is shut down.
23:27:43.897 [DefaultQuartzScheduler_Worker-7] DEBUG org.quartz.simpl.SimpleThreadPool - WorkerThread is shut down.
23:27:43.907 [DefaultQuartzScheduler_Worker-8] DEBUG org.quartz.simpl.SimpleThreadPool - WorkerThread is shut down.
23:27:43.909 [DefaultQuartzScheduler_Worker-9] DEBUG org.quartz.simpl.SimpleThreadPool - WorkerThread is shut down.
23:27:43.918 [DefaultQuartzScheduler_Worker-10] DEBUG org.quartz.simpl.SimpleThreadPool - WorkerThread is shut down.
23:27:43.919 [main] DEBUG org.quartz.simpl.SimpleThreadPool - No executing jobs remaining, all threads stopped.
23:27:43.919 [main] DEBUG org.quartz.simpl.SimpleThreadPool - Shutdown of threadpool complete.
23:27:43.919 [main] INFO org.quartz.core.QuartzScheduler - Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutdown complete.
Scheduler shutdown? true
Share with the World!
Categories Quartz Scheduler Tags java, quartz
Previous: Java Util Currency Tutorial
Next: MongoDB performance tuning tips

Recent Posts

  • Java 8 Date Time concepts
  • Maven dependency to local JAR
  • Caesar cipher in Java
  • Java casting trick
  • Java 8 flatMap practical example
  • Linked List – remove element
  • Linked List – insert element at position
  • Linked List add element at the end
  • Create Java Streams
  • Floyd Cycle detection in Java

Pages

  • About Farenda
  • Algorithms and Data Structures
  • Bash Tutorial
  • Bean Validation Tutorial
  • Clojure Tutorial
  • Design Patterns
  • Java 8 Streams and Lambda Expressions Tutorial
  • Java Basics Tutorial
  • Java Collections Tutorial
  • Java Concurrency Tutorial
  • Java IO Tutorial
  • Java Tutorials
  • Java Util Tutorial
  • Java XML Tutorial
  • JUnit Tutorial
  • MongoDB Tutorial
  • Quartz Scheduler Tutorial
  • Software Developer’s Tools
  • Spock Framework Tutorial
  • Spring Framework

Tags

algorithms bash bean-validation books clojure design-patterns embedmongo exercises git gof gradle groovy hateoas hsqldb i18n java java-basics java-collections java-concurrency java-io java-lang java-time java-util java-xml java8 java8-files junit linux lists log4j logging maven mongodb performance quartz refactoring regex rest slf4j solid spring spring-boot spring-core sql unit-tests

Yet another programming solutions log © 2022

sponsored
We use cookies to ensure that we give you the best experience on our website. If you continue to use this site we will assume that you are happy with it.Ok