它的底层是如何实现定时任务调度的?是不是还是要用到java最基础的Timer类呢?

解决方案 »

  1.   

    Quartz 是一个强大的企业级 Schedule 工具,也是目前最好的开源 Schedule 工具。
    Scheduler的常用方法
    添加一个定时任务:
    Date scheduleJob(JobDetail jobDetail,Trigger trigger)修改一个定时任务,主要是更改trigger:
    Date rescheduleJob(String triggerName, String groupName, Trigger newTrigger)删除一个定时任务,同时也会将于该jobDetail关联的trigger一并删除:
    boolean deleteJob(String jobName,String jobGroup)取得所有的jobDetail组
    String[] getJobGroupNames()  取得某个group下的所有的jobDetail
    String[] getJobNames(String groupName)取得指定的jobDetail
    JobDetail getJobDetail(String jobName, String jobGroup)取得指定的jobDetail的所有的Trigger
    Trigger[] getTriggersOfJob(String jobName, String groupName)取得指定的Trigger
    Trigger getTrigger(String triggerName, String triggerGroup)Quartz的存储:
    Quartz默认的是使用RAM存储所有的信息,但是这样的话,当我们重启服务器后,之前的所有的定时任务就全消失了。为了让服务器重启以后,我们的定时任务仍不丢失,我们可采用数据库持久化定时任务。
    首先要先建立数据库,在quartz-1.6.0\docs\dbTables下,选择自己使用的数据库的sql脚本,建立相应的数据库表。
      

  2.   

    Quartz 比 JDK 5 中的线程池还要早,其自己实现了一套线程池和时间调度。任务调度框架的实现非常复杂,一般很难实现。PS:JDK 5 及之后应该舍弃 Timer 和 TimerTask 两个类,改用 ScheduledExecutorService。Timer 运行时产生异常后会产生混乱的行为。