java 多线程 分发_Java多线程之任务分发

题引:

老师有3个同类任务,需要5个同学ABCDE分别都要处理完成。老师分配任务的策略是:每个任务都是随机分配下去的,每个同学拿到任务后都要完成这个任务。

像极了做数学题时的套路,这个题目其实就属于Java多线程之任务分发的模式。

在实际工作中,如果我们遇到了“要把多个同类任务分派给Java的多个线程去执行”的场景,需要思考如下的问题:

(1)待执行的任务列表是什么?

(2)需要启动多少Java线程去执行任务?

(3)每个Java线程实际要执行多少任务?(or:任务如何分发给每个Java线程?)

思考之后,我们还需要知道,Java多线程实现这种任务分发的一般策略是什么,为了便于下文叙述方便,我们先约定:

(1)任务数为taskNum

(2)计划启动线程数为planThreadNum

(3)实际启动线程数为realThreadNum

(1)确认实际启动的线程数:

如果taskNum < planThreadNum,则实际启动taskNum个线程,即一个线程执行一个任务;

如果taskNum众多,则实际启动planThreadNum个线程即可。

(2)确定每个线程执行的任务数:

如果taskNum < planThreadNum,每个线程都只执行一个任务;

如果taskNum众多,则先将taskNum按planThreadNum均分,余下的任务从前至后依次附加到线程中即可。

现在,我们既知道

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值