假设我有一些工作单元需要完成,我想相对于我的应用程序的其余部分进行异步操作,因为它可能需要很长时间,例如10秒到2分钟。要做到这一点,我正在考虑两个选择:
run();
。在上述情况下,我有以下问题:
答案 0 :(得分:4)
使用Quartz,您可以使用许多功能,并且已经很好地实现了#34;,例如:
不使用它,你必须自己控制它们,有些问题可能很复杂。
开始新主题:
这取决于您想要启动哪种工作,以及您的应用程序的其他功能是否也需要作业调度。
如果你的担心只是异步,你就可以开始一个线程。如果还有其他问题,比如聚类,您可以考虑使用quartz。
答案 1 :(得分:2)
我不会将Quartz添加到一个项目中,只是为了这个功能,但是如果我已经安装了Quartz并且已经使用了它,那么,即使是一次性我也会使用一次性的Quartz作业。
原因只是一致性。 Quartz已经管理了线程和作业过程的所有细节。单个线程是简单的,但我们也从经验中知道,即使单个线程也可能不简单。
Quartz将线程包装到一个高级概念(Job)以及它带来的所有内容。
从代码库的角度来看,您可以获得具有相同语义的所有作业的一致性,您的开发人员不必“仅为一个线程”“转换”。之后,他们可能“只是做一个线程”,并进入Quartz无痛地管理的复杂性。
在这种情况下,使用Quartz作业的抽象和条件的开销并不足以仅使用线程,因为“它的重量更轻”。
一致性和通用性是代码库的重要方面。我会尽可能地坚持单一的抽象和杠杆作用。
答案 2 :(得分:0)
如果它是一次性工作并且没有其他要求,例如工作持续性,日程安排等,那么您最好使用常规线程。
Runnables
和Threads
答案 3 :(得分:0)
对于即时1次任务,线程就足够了。 但是有更好的插件,如quartz,Spring Scheduler