石英作业比.线程立即执行一次任务

Dav*_*vid 7 java multithreading quartz-scheduler runnable

假设我有一些工作单元需要完成,我想相对于我的应用程序的其余部分进行异步操作,因为它可能需要很长时间,例如10秒到2分钟.要做到这一点,我正在考虑两个选择:

  1. 使用简单的触发器设置Quartz作业,只能触发一次并尽快触发.
  2. 创建一个Runnable实例,将其移交给一个Thread,然后调用run();.

在上述情况下,我有以下问题:

  1. 什么使用Quartz作业让我觉得线程没有?
  2. 什么使用runable让我使用石英作业不?
  3. 就最佳实践而言,应该使用什么标准来确定此用例的Quartz作业和runnables?

Ken*_*ent 5

使用 Quartz,您可以拥有许多“良好实现”的功能,例如:

  • 作业执行的事务管理
  • 作业持久化,以便我们了解正在运行的作业的状态
  • 聚类支持
  • 调度控制,即使您只需要简单的触发器。但它提供了可能性。

如果不使用它,您必须自己控制它们,有些问题可能会很复杂。

开始新线程:

  • 轻量级,无需工作持久性,quartz api 等。
  • 您的应用程序运行时无需额外依赖(quartz)
  • 误差源(来自石英)减少

这取决于您想要开始哪种作业,以及应用程序的其他功能是否也需要作业调度。

如果您关心的只是异步,您可以启动一个线程。如果还有其他问题,例如集群,您可以考虑使用quartz。