• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Tim Cooke
  • Campbell Ritchie
  • paul wheaton
  • Ron McLeod
  • Devaka Cooray
Sheriffs:
  • Jeanne Boyarsky
  • Liutauras Vilda
  • Paul Clapham
Saloon Keepers:
  • Tim Holloway
  • Carey Brown
  • Piet Souris
Bartenders:

Quartz scheduler or Timer task?

 
Ranch Hand
Posts: 94
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I need to write a scheduler for our application however not sure which will suit better for our scenario.

Can somebody let me know the advantages of quartz scheduler(Cron type scheduling) over java Timer task API?

And which one is suitable for the following scenario:

I am reading the triggering time from the configuration file which contains two values:
1) Scheduling Time: time when the scheduler will trigger
2) Unit: It can be Minutes, hours and days

Case 1: if Unit is Minutes:
If suppose Scheduling time in configuration file is 5 and unit is minutes then the scheduler should be trigerred in every Five minutes from the current time.

Case 2: if unit is Hours
It can take value between 0-23, suppose Scheduling time is 22 and unit is hours then the scheduler should be trigerred every day at 10 PM.

Case 3: if unit is days
If scheduling time is 40 and unit is days then the scheduler should be trigerred after every 40 days. suppose if todays date is 27th may then schduler should be trigerred on 6th July.

I know it is a kind of complex requirement and want to decide on which is the best suitable for this (Quartz or Timertask) along with the quartz scheduler adavantages over timer tasks.

Thanks
 
Rancher
Posts: 377
Android Spring Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hey,

Well I know that Quartz allows you to set CRON expressions which would quite easily let you schedule tasks for the requirements you specified there.
E.g. a cron for 10pm every night would be

0 0 22 * ? *

which in CRON terms is very simple.

Sean
 
john sal
Ranch Hand
Posts: 94
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hey thanks for the reply..

You mean It allows us to schedule the tasks quite easily like 3rd day of every month or last tuesday of month...is there any other advantages of using quartz scheduler over Timer task (or related to performance)?

For my scenario I have to make several complex calculations to evaluate the cron expression which can be done easily using the timer task...because I feel it does not have any parameter for the number of days..say if I want to schedule it after every 40 day from the current day then I have to make lot of calculations to set the cron expression, and will have to set each of the cron expression parameter to make sure it is triggered after exactly 40 days from now right?
 
Sean Clark
Rancher
Posts: 377
Android Spring Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hey,

Well think about it, if you have to run the job every 40 days and your app stops working after 29 days, how do you plan on working out that the job should be run in 11 days when you restart it? You should take things like that into consideration.

From the Quartz page:

Why not just use java.util.Timer?
Since JDK 1.3, Java has "built-in" timer capabilities, through the java.util.Timer and java.util.TimerTask classes - why would someone use Quartz rather than these standard features?

There are many reasons! Here are a few:

Timers have no persistence mechanism.
Timers have inflexible scheduling (only able to set start-time & repeat interval, nothing based on dates, time of day, etc.)
Timers don't utilize a thread-pool (one thread per timer)
Timers have no real management schemes - you'd have to write your own mechanism for being able to remember, organize and retrieve your tasks by name, etc.
...of course to some simple applications these features may not be important, in which case it may then be the right decision not to use Quartz.


At the end of the day it is down to your requirements.
Sean
 
john sal
Ranch Hand
Posts: 94
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hey Thanks for such a nice explanation, this is wat I was looking for
 
reply
    Bookmark Topic Watch Topic
  • New Topic