参考:http://cuiyingfeng.blog.51cto.com/43841/59734
1、SchedulerFactoryBean会自动启动。
当在spring文件中定义了多个SchedulerFactoryBean实例时,一定要小心,因为这些ScheduleFactoryBean自从load进程序里,就会自动启动。如果要手动控制,注意要将autoStartup属性设置为false。
2、SchedulerFactoryBean暴露的是Scheduler,而不是SchedulerFactoryBean。
SchedulerFactoryBean实现了FactoryBean接口,必须实现两个方法,一个是getObjectType,另外一个则是getObject;其中getObjectType定义了返回的类型应该为Scheduler,而getObject指定了返回的是其一个重要属性scheduler,这个scheduler就是我们要获得的调度。
若在配置文件里为SchedulerFactoryBean定义了id属性为"scheduler",则在程序里调用getBean时,需要注意getBean("scheduler")返回的是Scheduler对象
3、
SchedulerFactoryBean中有两个很重要的属性,一个是scheduler,另外一个是schedulerFactoryClass,spring通过用schedulerFactoryClass做代理来产生调度,并把它赋给scheduler。
private Class schedulerFactoryClass = StdSchedulerFactory.class;
//如果你没有指定schedulerFactoryClass ,那么它用的是quartz中自带的调度工厂,
this.scheduler = createScheduler(schedulerFactory, this.schedulerName);
//这里的schedulerName默认传进来是空的,其实如果你不是用自己定义的schedulerFactoryClass
//恐怕也没有什么意义,因为createScheduler是这样调用的
return schedulerFactory.getScheduler();
//显然schedulerName并没有用到,除非是你自行写一个schedulerFactory,并做好相应处理,
//否则返回的这个scheduler一定是一个指定名称的调度
Scheduler sched = schedRep.lookup(getSchedulerName());
//这个sched就是要代理生成的scheduler,getSchedulerName只有一句话,如下:
cfg.getStringProperty(PROP_SCHED_INSTANCE_NAME,"QuartzScheduler");
//如果我们没有使用一些特殊的机制,那么返回的只能是一个固定的字符串。
如上说述,如果我们希望不进行改造,就在spring的配置文件中定义多个调度的方法来实现我们个性化的任务安排时,可能并不可行。因为spring配置的scheduler只能有一个,即使你定义了多个调度,那么其实实现的只有一个,只是所有你希望指向不同调度的id都会指向它罢了,而这个调度会包含了其它所有调度中的任务。
4、抱错:org.quartz.SchedulerException: Repeat Interval cannot be zero
场景:该错误通常是在引用了SimpleTriggerBean的时候没有为repeatCount和repeatInterval赋值发生的,很奇怪,SimpleTriggerBean有一个空构造函数,在里面直接为repeatCount赋了一个REPEAT_INDEFINITELY,这样,当其进入validate函数时,会抱错。而quartz中的SimpleTrigger这两个属性默认值均为0,不懂spring中为何这样处理。
5、quartz和crontab的区别
a、quartz属于用户级别,crontab则属于系统级别;
b、quartz调度的线程,所有线程共享一个jvm;crontab调度的则是应用,每个应用都独立的占用资源。
6、quartz中加入并发多线程分析
a、quartz本身是有线程池支持的,这个可以用org.quartz.threadPool.threadCount属性来设置线程池大小,quartz的任务可以由quartz的线程池自动调度
b、对每个任务也可能起多线程,但是需要对并发数量做控制,可以考虑使用commons-pools提供的对象池机制

spring中的quartz调度问题相关推荐

  1. spring中配置quartz定时器

    spring中配置quartz定时器 最近项目中用到定时器,项目用的spring所以想在spring中配置一下定时器,看到网上用quartz的比较多,所以就搜了一下.参考:http://blog.cs ...

  2. Spring中定时任务Quartz集群配置学习

    Spring中定时任务Quartz集群配置学习 原来配置的Quartz是通过spring配置文件生效的,发现在非集群式的服务器上运行良好,但是将工程部署到水平集群服务器上去后改定时功能不能正常运行,没 ...

  3. Spring中配置Quartz的misfireInstruction

    参考:http://blog.csdn.net/george_hsu/article/details/6943336 最近在做一个自动发送邮件的小功能,其中用到了Quartz来做事件触发.首先说一下, ...

  4. java调度:(四) spring中使用quartz的配置文件.

    quartz主要是三个部分:Scheduler Job Trigger,其中,Job 负责定义需要执行的任务,Trigger 负责设置调度策略,Scheduler 将二者组装在一起,并触发任务开始执行 ...

  5. 解决Spring中使用quartz发生NotSerializableException methodInvoker的问题

    Spring2.5 + quartz1.6.5 发生如下异常 Caused by: org.quartz.JobPersistenceException: Couldn't store job: Un ...

  6. java怎么加定时器,Spring中定时器实现

    在一些工作需要使用到定时器,Spring很好的集成了定时器的功能! 在Spring 中使用Quartz,本文介绍Spring3.0以后自主开发的定时任务工具,spring task,可以将它比作一个轻 ...

  7. Spring 3整合Quartz 2实现定时任务--转

    常规整合 http://www.meiriyouke.net/?p=82 最近工作中需要用到定时任务的功能,虽然Spring3也自带了一个轻量级的定时任务实现,但感觉不够灵活,功能也不够强大.在考虑之 ...

  8. Spring 3整合Quartz 2实现定时任务(转)

    http://www.meiriyouke.net/?p=82 最近工作中需要用到定时任务的功能,虽然Spring3也自带了一个轻量级的定时任务实现,但感觉不够灵活,功能也不够强大.在考虑之后,决定整 ...

  9. Quartz在Spring中设置动态定时任务 .

    什么是动态定时任务: 是由客户制定生成的,服务端只知道该去执行什么任务,但任务的定时是不确定的(是由客户制定).这样总不能修改配置文件每定制个定时任务就增加一个trigger吧,即便允许客户修改配置文 ...

最新文章

  1. Android(java)学习笔记96:layout_weight使用注意事项
  2. 白盒测试的3中主要方法(cont.)
  3. 【通俗理解线性代数】 -- 理解二次型
  4. Tomcat-上传文件路径填坑
  5. Android中的长度单位详解
  6. Linux——给history命令加上用户和时间
  7. 各种浏览器css不兼容的写法
  8. 使用方法 ros_大白菜的ROS笔记(8)(创建TF广播和监听,内容很多,细节满满)...
  9. Windows平台安装dlib方法汇总
  10. codeblock 添加 .lib 文件
  11. Python3 字符串小练习
  12. I2C完整讲解(二)
  13. python抓取汇率_09 使用Python爬取中国银行网站选择汇率最坑的一天
  14. 基于java植物大全智能识别系统设计与实现
  15. 【论文总结】Prototype Rectification for Few-Shot Learning(附翻译)
  16. php获取蓝凑云文件列表,PHP获取蓝奏云直链方法
  17. matlab 实现水印添加
  18. JAVA中关于日志的介绍
  19. docker-compose 部署 php + nginx + mysql + redis
  20. 重装、删除、卸载ArcGIS的注意的事项

热门文章

  1. SQLPLUS SPOOL命令使用详解
  2. 独立软件开发商进军SaaS注意八个问题,互联网营销
  3. 英雄会解读:不一样的回答,一样的CTO
  4. Tungsten Fabric SDN — 制作/分发 Local Docker Registry
  5. 移动通信网络协议 — GTP 协议
  6. Python 进阶_OOP 面向对象编程_类和继承
  7. Fusion360操作记录
  8. IOS开发系列--IOS程序开发概览
  9. SimplifiedHibernate:简化了的Hibernate
  10. 解决在AX 2009中删除公司时提示:未授权用户##删除表“DEL_PBATRANSLATECONSISTOF”中的记录...