gpt4 book ai didi

java - 帮助实现任务调度算法

转载 作者:太空宇宙 更新时间:2023-11-04 08:49:46 25 4
gpt4 key购买 nike

我正在开发一个应用程序,其中有数千个任务相关联有数百个设备,每个任务需要 < 5 毫秒才能开始执行,并且平均需要 100 毫秒才能完成。

条件如下:

  1. 每个设备只能处理一个一次执行一个任务,例如,一个任务必须在其分配的任务上完成运行在处理后续任务之前设备。
  2. 调度程序应该高效。目前,处理给定设备的工作队列花费的时间比其任务总和还要长。

以下是当前实现的基本描述:

每个设备都包含一个工作队列,其中充满了与该设备。

当任务入队时,该设备的工作队列被放入全局运行队列(队列的队列)。全局运行队列被工作线程消耗它将设备的任务对象出队,处理一个,然后放置位于全局运行队列后面的设备队列。当给定设备再次出队,工作线程检查任务是否已完成,如果是,则执行下一个任务。此过程持续进行,直到所有设备排队全局运行队列中的任务已耗尽。

有什么改进建议吗?我已经说清楚了吗?如果没有,请告诉我,我会尽力澄清。

感谢您花时间查看此内容。问候。

最佳答案

ExecutorCompletionService这样的东西怎么样?与 ThreadPoolExecutor 一起。这为您提供了完成时的回调,您可以使用它来提交后续作业,以及执行器的托管线程池,您可以调整它以提高吞吐量。

我建议您通过探查器运行代码,以查看哪些线程当前正在阻塞(听起来像是您的生产者设备线程)。我可以推荐 YourKit Java Profiler ,但它不是免费的。

关于java - 帮助实现任务调度算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3624160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com