假设我有一些工作单元需要完成,我想相对于我的应用程序的其余部分异步执行,因为它可能需要很长时间,例如10秒到2分钟.要做到这一点,我正在考虑两个选择:
>使用简单的触发器设置Quartz作业,只能触发一次并尽快触发.
>创建一个Runnable实例,将其交给Thread,然后调用run();.
在上述内容中,我有以下问题:
>使用Quartz作业得到的是线程没有的东西?
>使用可运行的东西让我使用石英作业不是什么?
>就最佳实践而言,应该使用什么标准来确定此用例的Quartz作业和runnables?
使用Quartz,您可以“很好地实现”许多
功能,例如:
>作业执行的事务管理
>工作持久性,以便我们了解正在运行的工作的状态
>群集支持
>调度控制,即使您只需要简单的触发器.但它提供了可能性.
不使用它,你必须自己控制它们,一些问题可能很复杂.
开始新线程:
>重量轻,无作业持久性,石英api等
>您的应用程序运行没有额外的依赖(石英)
>错误源(来自石英)减少了
这取决于您想要启动哪种工作,以及您的应用程序的其他功能是否也需要作业调度.
如果你的担心只是异步,你就可以开始一个线程.如果还有其他问题,比如聚类,您可以考虑使用石英.