美文网首页
Java 定时调用任务的几种方式

Java 定时调用任务的几种方式

作者: 南土酱 | 来源:发表于2019-04-29 10:22 被阅读0次

定时调用任务是Java开发中必不可少的功能。
涉及到 数据库定时备份, 日志定时压缩, 数据定时上传等等。

写这篇文章的初衷是因为自己想写一个 定时发送邮件的功能。
先谈谈自己搜索到的资料,以下几种实现方式:
(只讲实现方法,不讲实现代码。)

  1. 利用 Thread 的Sleep 方法
    (这种方法不可取。第一它是基于线程的, 容易受到cpu调度情况或其他线程的影响。第二是线程会被挂起,导致消耗cpu资源,假设有10W的用户都需要定时执行某任务,后果就...)
  2. 利用jdk自带的定时器 Timer 。分为两个类, 一个是执行任务类,一个是任务实现类。
    (这种方法也不可取。因为它对系统时间非常敏感,如果在执行过程中,系统时间发生了改变,那么它执行的任务可能会出现令人惊讶的结果)

3.通过线程池的scheduleAtFixedRate方法
一方面,此种实现方式继承了Timer的灵活性。另一方面,此种方式方式,对系统时间不再敏感,修改系统时间后,它仍然是按照定时时间来执行
当然以上的三种方法它们的局限性个人认为: 只能应用于 Java SE开发,当然你非要用于 Java Web 开发也不是不行。但是最好还是不要这么做,现在主流 SSM 或SSH 开发。利用框架开发为的就是简便,高效。但是它们并没有被框架所支持,需另外引入和自己编写,及其麻烦。但是下边的开发方式 spring 框架已经把它集成到一起了,我们无需另外自己造轮子

  1. 利用调度框架 Quartz 。
    如何使用?本人找到一篇对新手非常照顾的文章。感谢有许多这样网友的真诚分享
    Quartz教程URL,点击跳转

相关文章

网友评论

      本文标题:Java 定时调用任务的几种方式

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