采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
假如调度计划表map有10万个计划(反正会遍历超过2秒),其中有一个任务2秒周期执行,其他都是一天一个月执行的。我的问题是,2秒就要执行,但是map遍历超过了2秒,2秒的那个任务执行就要延后了哟?那这样任务就不是定时执行了吧。不知道我思考的对不对。
同学好,假设遍历10万个任务需要2秒成立,那么你说的情况也不会出现。
检查的逻辑是先获取当前时间,保存在now变量中,然后遍历每个任务与它们的调度时间做比较,整个过程中now不会发生改变,与遍历耗时无关,任务一定可以被调度。
之所以采用遍历检查的方式是因为实现简单,如果我们做的更好应该考虑更合适的数据结构,比如:最小堆+哈希表,但鉴于实现成本高所以没有在课程中体现。
老师你好,基于最小堆 + 哈希表的实现能简单说两句吗?借鉴一下思路
最小堆,即是优先队列,key为每个任务的调度时间,value为每个任务的指针(指向哈希表的value值)。 哈希表:key为每个任务的名字,value为具体的每个任务。
登录后可查看更多问答,登录/注册
分布式系统设计+高并发细节处理,一次性让你“晋级”到位
960 5
1.0k 3
1.5k 1
913 7
889 5