The Spring Framework provides abstractions for asynchronous execution and scheduling of tasks
with the TaskExecutor and TaskScheduler
interfaces, respectively. Spring also features implementations of those interfaces that support
thread pools or delegation to CommonJ within an application server environment. Ultimately
the use of these implementations behind the common interfaces abstracts away the differences
between Java SE 5, Java SE 6 and Java EE environments.
Spring also features integration classes for supporting scheduling with the
Timer, part of the JDK since 1.3, and the Quartz Scheduler
(http://www.opensymphony.com/quartz/). Both of those schedulers
are set up using a FactoryBean with optional references
to Timer or Trigger instances, respectively.
Furthermore, a convenience class for both the Quartz Scheduler and the Timer is
available that allows you to invoke a method of an existing target object
(analogous to the normal MethodInvokingFactoryBean operation).