首页 > 解决方案 > 如何在任务执行器中使用阻塞队列中的任务实现公平性

问题描述

我想实现一个消费者服务,它正在处理队列中的任务。我使用执行器服务实现的消费者服务/任务运行器。

但是,我需要处理的某些任务比其他任务花费的时间更长,我想在任务运行器中实现某种类型的公平性。当我调用/调度消费者时,我会知道队列中当前要执行的任务数。

我想知道实现这一目标的最佳方法是什么?

每个任务都有一个特定的类型和一个大概的执行时间。

标签: javaproducer-consumer

解决方案


您可以通过试验任务优先级来调整资源使用情况,也可以强制运行时间较长的任务定期休眠,强制它们允许其他任务执行。


推荐阅读