java - 如何在任务执行器中使用阻塞队列中的任务实现公平性
问题描述
我想实现一个消费者服务,它正在处理队列中的任务。我使用执行器服务实现的消费者服务/任务运行器。
但是,我需要处理的某些任务比其他任务花费的时间更长,我想在任务运行器中实现某种类型的公平性。当我调用/调度消费者时,我会知道队列中当前要执行的任务数。
我想知道实现这一目标的最佳方法是什么?
每个任务都有一个特定的类型和一个大概的执行时间。
解决方案
您可以通过试验任务优先级来调整资源使用情况,也可以强制运行时间较长的任务定期休眠,强制它们允许其他任务执行。
推荐阅读
- java - 有意拨打电话后让手机休眠
- javascript - 如何在 nuxtjs 中控制路由渲染
- html - 如何一次按标签或类查找多个元素
- python - 使用 LSTM 单元训练 RNN 时的 RAM 内存使用情况
- spring-boot - 使用 docker 容器和 nginx 运行 Spring boot App
- c# - 如何等待作者做出反应 discord.net
- c++ - MacOS上的Xcode 11项目不在一个函数中使用sin和cos:未定义符号“___sincosf_stret”
- here-api - 在自动完成中过滤建议
- c++ - 类和构造函数中的函数根本不起作用,也不返回任何错误
- python - 为什么运行这个 python 脚本会占用我所有的磁盘空间?