java - 限制两个作业不能在 Quartz-Scheduler 中同时运行

标签 java quartz-scheduler

是否可以在 Quartz-Scheduler 中定义作业的执行约束?

确实,我有两个实现接口(interface) Job 的类:JobA 和 JobB。

JobA 将每分钟安排一次。 JobB 将每小时安排一次。

我不希望 JobA 和 JobB 同时运行。

注意:JobA 和 JobB 做的事情不同。

感谢您的回答。

最佳答案

没有对此的直接支持。如果是同一个作业,您可以将其定义为有状态的 - 这样的作业不能同时运行。

否则你可以将 Quartz 工作线程的数量限制为 1,另外你可以定义线程优先级来选择哪个作业应该首先运行。不幸的是,当涉及更多作业时,此解决方案将无法扩展。

最后,您可以在不涉及 Quartz 的情况下手动实现它。我猜你不希望同时访问某些操作或某些资源。考虑锁定该方法/资源,以便两个作业同时运行,但一个会阻塞并等待另一个完成。

关于java - 限制两个作业不能在 Quartz-Scheduler 中同时运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10655979/

相关文章:

java - 如何在 Controller 中将 RequestBody 定义为列表,我收到 500 错误

java - 如何使用 Jackson 反序列化枚举?

java - 如何在 n 个敌人上生成 k 次射击的分布

java - 我如何每隔几分钟运行一次带有非轮询消费者的 Apache Camel 路由

grails - 禁用 Grails Quartz 作业并在 Controller 中启动它

java - 在 android 中将 Json 数据显示为菜单项

java - 按需记录数据库 CUD 操作和回滚语句

jpa - Camel 中途jpa消费者

java - 在 Quartz 中使用 property/xml 文件动态添加脚本作为作业

jsf - 从 quartz 作业调用应用程序范围的 bean 中的方法