java - quartz 工作比。立即执行一次性任务的线程

标签 java multithreading quartz-scheduler runnable

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

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

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

  1. 使用 Quartz 作业给我带来了什么线程没有的东西?
  2. 使用 runable 给我带来了什么,而使用 quartz 作业却没有?
  3. 就最佳实践而言,应该使用什么标准来决定此用例的 Quartz 作业和可运行对象?

最佳答案

使用 Quartz,您可以“很好地实现”许多功能,例如:

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

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

开始新线程:

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

这取决于你想开始什么样的工作,以及你的应用程序的其他功能是否也需要工作调度。

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

关于java - quartz 工作比。立即执行一次性任务的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25571960/

相关文章:

spring - 在 Spring Boot 2 中使用 Quartz

java - 如何在 Java 中使用循环来制作这个表 0-9?

java-jsf 库,具有良好的移动浏览器支持

java - 计数的字节数和总字节数不同

c# - 简单的线程编程

objective-c - 从不同线程访问只读对象的思考

java - Tomcat SSL : unable to find valid certification path to requested target

ios - NSOperation对象(线程环境)中的非原子属性,何时使用?

java - Spring + hibernate + quartz : Dynamic Job

spring - quartz 调度程序类的 Kotlin Spring Boot Autowired lateinit 问题