美文网首页
Java 定时器

Java 定时器

作者: 夏_0327 | 来源:发表于2018-12-24 16:07 被阅读0次

Timer 缺陷

  • 不支持多线程并发
  • 任务抛出异常会停止所有任务的执行

Quartz

Quartz 是一个完全由 Java 编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。

  • 默认多线程异步执行
  • 一个任务在上一次调度未完成执行,下一次调度时间到时,会另起一个线程开始新的调度。在业务繁忙时,一个任务或许会有多个线程在执行,导致数据处理异常。
  • 单任务同步:配置属性,可以使一个任务的一次调度在未完成时,而不会开启下一次调度。
  • 多个任务同时运行,任务之间没有直接的影响,多任务执行的快慢取决于CPU的性能。
  • 支持集群部署。
    集群通过故障切换和负载平衡的功能,能给调度器带来高可用性和伸缩性。
    从本质上来说,是使集群上的每一个节点通过共享同一个数据库来工作的(Quartz通过启动两个维护线程来维护数据库状态实现集群管理,一个是检测节点状态线程,一个是恢复任务线程)。
    负载平衡是自动完成的,集群的每个节点会尽快触发任务。当一个触发器的触发时间到达时,第一个节点将会获得任务(通过锁定),成为执行任务的节点。
    故障切换的发生是在当一个节点正在执行一个或者多个任务失败的时候。当一个节点失败了,其他的节点会检测到并且标 识在失败节点上正在进行的数据库中的任务。任何被标记为可恢复(任务详细信息的”requests recovery”属性)的任务都会被其他的节点重新执行。没有标记可恢复的任务只会被释放出来,将会在下次相关触发器触发时执行。

Spring Task

Spring Task,可以将它比作一个轻量级的Quartz,而且使用起来很简单,除spring相关的包外不需要额外的包,而且支持注解和配置文件两种形式。

  • 默认单线程同步执行。
  • 一个任务执行完上一次之后,才会执行下一次调度 spring task的调度任务是串行的,意思就是如果配了多个任务的话,前面一个任务没有结束,后面的任务即使是时间到点了也不会跑。
  • 多任务之间按顺序执行,一个任务执行完成之后才会执行另一个任务。
  • 多任务并行执行需要设置线程池。
  • 全程可以通过注解配置。
  • 不支持分布式部署 不支持持久化,如果项目需要持久化定时任务,还是要选择Quartz比较。

两者对异常的处理

Quartz:某次执行任务过程中抛出异常,不影响下一次任务的执行,当下一次执行时间到来时,定时器会再次执行任务。
SpringTask:一旦某个任务在执行过程中抛出异常,则整个定时器生命周期就结束,以后永远不会再执行定时器任务。

相关文章

  • java定时器

    java定时器 什么是Java定时器?Java 定时器就是在给定的间隔时间执行自己的任务; Java实现定时器有以...

  • java中的定时器

    1、java中普通定时任务 Timer定时器 ScheduledThreadPoolExecutor 定时器 Ti...

  • 定时器(Quartz) [kwɔːts]

    Quartz定时器就是对java中Timer定时器的封装,支持Cron表达式定时 使用步骤: 1.定义任务类(指定...

  • JAVA实现定时任务的几种方式

    JAVA实现定时任务的几种方式 @(JAVA)[spring|quartz|定时器]近期项目开发中需要动态的添加定...

  • 35 定时器

    问题: 定时器技术有哪些? 答案: 前端当中:(1)setinterval(2)settimeout java当中...

  • java开发常用的定时器

    java开发常用的定时器 参考[http://www.javaboy.org/2019/0418/springbo...

  • java定时器

    定时器是java很常用的一个功能,最近写项目时常用,在此记录下常用的几种方法,以备复习之用。

  • java 定时器

    http://blog.csdn.net/bingLoVezi/article/details/15905675 ...

  • Java 定时器

    Java 定时器 1. 概述 Timer 可以按计划执行重复的任务或者定时执行指定任务,这是因为 Timer 内部...

  • Java 定时器

    Timer 缺陷 不支持多线程并发 任务抛出异常会停止所有任务的执行 Quartz Quartz 是一个完全由 J...

网友评论

      本文标题:Java 定时器

      本文链接:https://www.haomeiwen.com/subject/afuzkqtx.html