请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,请教个调度计划表map的问题?

假如调度计划表map有10万个计划(反正会遍历超过2秒),其中有一个任务2秒周期执行,其他都是一天一个月执行的。
我的问题是,2秒就要执行,但是map遍历超过了2秒,2秒的那个任务执行就要延后了哟?那这样任务就不是定时执行了吧。不知道我思考的对不对。

正在回答 回答被采纳积分+3

1回答

小鱼儿老师 2019-03-21 09:48:33

同学好,假设遍历10万个任务需要2秒成立,那么你说的情况也不会出现。


检查的逻辑是先获取当前时间,保存在now变量中,然后遍历每个任务与它们的调度时间做比较,整个过程中now不会发生改变,与遍历耗时无关,任务一定可以被调度。


之所以采用遍历检查的方式是因为实现简单,如果我们做的更好应该考虑更合适的数据结构,比如:最小堆+哈希表,但鉴于实现成本高所以没有在课程中体现。

1 回复 有任何疑惑可以回复我~
  • 老师你好,基于最小堆 + 哈希表的实现能简单说两句吗?借鉴一下思路
    回复 有任何疑惑可以回复我~ 2020-01-08 15:27:27
  • 最小堆,即是优先队列,key为每个任务的调度时间,value为每个任务的指针(指向哈希表的value值)。
    哈希表:key为每个任务的名字,value为具体的每个任务。
    回复 有任何疑惑可以回复我~ 2021-03-21 09:57:25
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信