【发布时间】:2017-08-10 07:41:10
【问题描述】:
假设我们有一个JobItem,它有两个字段jobId 和dbTableName。
我们还有一个 4 的 Executor 线程池。
最初,执行器将运行队列中的第一个作业项。
如果后续队列头有相同的dbTableNamesay tableA,我想获取下一个队列项下一个不具有相同dbTableName的作业项并先执行。
由于第一个作业可能需要很长时间,我们最终可能会在再次处理 tableA 之前使用其他表处理多个其他作业项
我们要确保 tableA 的所有作业都按顺序处理。
我有另一个 List 保存当前正在运行的作业列表。
目前,我看到只有迭代队列项并检查当前正在运行的作业列表才能提供这样的功能。
有没有更好的方法来实现这一点?
谢谢
【问题讨论】:
-
您可以使用 FIFO 结构,并在同名表上已经运行作业时将作业推回队列中
标签: java multithreading synchronization