关于执行一个新任务的逻辑
按照源码的逻辑,如果线程池在运行状态,但是任务队列却满了,那么就会addWorker(command, false);
这样的话,那岂不是队列里的任务还没执行,就先执行了最后才进来的command任务?这好像不太符合逻辑的吧,比如对于服务器来讲,已经有n个请求等待很久了,这时候n+1个请求来时却先响应了它,反而让前面n个请求继续等着,是不是有点过分啊。
不应该先到的先处理吗。
34
收起
正在回答
2回答
抱歉同学,这里老师是理解错误。线程池在运行状态,任务队列满了,新创建非核心线程会执行最后进来的程序。这是程序代码设定的,通常情况是只是尽快执行任务,对任务执行先后顺序没有过多要求。如果需要按顺序执行的任务,例如秒杀场景,可以配合使用其他方式,例如消息队列来具体实现。
祝:学习愉快~
java工程师2020版
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星