假设我有一些工作单元需要完成,我想相对于我的应用程序的其余部分异步完成它,因为它可能需要很长时间,例如10秒到2分钟。为此,我正在考虑两种选择:
- 安排一个 Quartz 作业,将一个简单的触发器设置为仅触发一次并尽快触发。
- 创建一个 Runnable 实例,将其交给 Thread,然后调用
run();
。
在上述情况下,我有以下问题:
- 使用 Quartz 作业给我带来了什么线程没有的东西?
- 使用 runable 给我带来了什么,而使用 quartz 作业却没有?
- 就最佳实践而言,应该使用什么标准来决定此用例的 Quartz 作业和可运行对象?
最佳答案
使用 Quartz,您可以“很好地实现”许多功能,例如:
- 作业执行的事务管理
- 作业持久性,以便我们了解正在运行的作业的状态
- 集群支持
- 调度控制,即使您只需要简单的触发器。但它提供了可能性。
不使用它,你必须自己控制它们,有些问题可能会很复杂。
开始新线程:
- 轻量级,无需工作持久性,quartz api 等。
- 您的应用程序无需额外依赖即可运行(quartz)
- 减少了错误源(来自 quartz )
这取决于你想开始什么样的工作,以及你的应用程序的其他功能是否也需要工作调度。
如果你只关心异步,你可以只启动一个线程。如果还有其他问题,比如集群,你可以考虑使用 quartz。
关于java - quartz 工作比。立即执行一次性任务的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25571960/