Java中定时器功能有哪些好的实现方案?

发布于 2022-08-28 01:21:48 字数 101 浏览 12 评论 0

想实现一个功能,需要定期查看一个表,并发送消息。
在Java中,有哪些好的实现方案?资源耗费情况如何?容错能力好的有哪些?

请高手支招。

谢谢。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

深者入戏 2022-09-04 01:21:48

用 Quartz 进行作业调度

Quartz 是个开放源码项目,提供了丰富的作业调度集。在这篇文章中,软件工程师 Michael Lipton 和 IT 架构师
Soobaek Jang 对 Quartz API 进行了介绍,从对框架的一般概述开始,并以一系列展示 Quart
基本特性的代码示例作为结束。在阅读完本文并看过代码示例后,您应当能够把 Quartz 的基本特性应用到任何 Java™ 应用程序中。

忆离笙 2022-09-04 01:21:48

对于java本身提供的功能来说, 就是Timer 和 ScheduledThreadPoolExecutor了.

我找了这个网页:
http://dumb-coder.blogspot.sg/2012/10/timer-vs-scheduledthreadpoolexecutor.html

和我一直的理解是一致的. 每一个Timer对应一个后台线程, 其接收到的TimerTasker 被放入队列中(具体实现应该是一个小顶堆). 适合少量的, 短的任务.

如果要处理多个, 长时间的任务, 并且对时间 和 并行处理有要求的, 用ScheduledThreadPoolExecutor.


如果在Java EE环境下, 还可以考虑EJB timer
http://docs.oracle.com/javaee/6/tutorial/doc/bnboy.html

以前用过, 印象最深的就是 1). 可以和transaction一起用, 如果事务回滚, timer的创建/取消也会回滚. 2). persistent. 应用服务器重启后, timer不会丢失.

恋你朝朝暮暮 2022-09-04 01:21:48

推荐使用Spring的task,通过标注方式实现,方便简单

<task:executor id="executor" pool-size="5" />
<task:scheduler id="scheduler" pool-size="10" />
<task:annotation-driven executor="executor" scheduler="scheduler" />
忘东忘西忘不掉你 2022-09-04 01:21:48

spring task , 如果你在用spring的话

木緿 2022-09-04 01:21:48

如果是简单的定时调度,使用Timer就够了,如果复杂的调度任务,可以考虑使用Quartz,容错能力要看你写的代码了,不管使用哪种方式,Timer和Quartz都是稳定的。

森林很绿却致人迷途 2022-09-04 01:21:48
  1. java自带的java.util.Timer
  2. Spring3.0以后的task
  3. 开源项目Quartz
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文