你都使用什么线程模型

1、Future模型

该模型通常在使用的时候需要结合Callable接口配合使用。

Future是把结果放在将来获取,当前主线程并不急于获取处理结果。允许子线程
先进行处理一段时间,处理结束之后就把结果保存下来,当主线程需要使用的时
候再向子线程索取。

Callable是类似于Runnable的接口,其中call方法类似于run方法,所不同的是run
方法不能抛出受检异常没有返回值,而call方法则可以抛出受检异常并可设置返回
值。两者的方法体都是线程执行体。

2、fork&join模型

该模型包含递归思想和回溯思想,递归用来拆分任务,回溯用合并结果。可以用来
处理一些可以进行拆分的大任务。其主要是把一个大任务逐级拆分为多个子任务,
然后分别在子线程中执行,当每个子线程执行结束之后逐级回溯,返回结果进行汇
总合并,最终得出想要的结果。

这里模拟一个摘苹果的场景:有100棵苹果树,每棵苹果树有10个苹果,现在要把
他们摘下来。为了节约时间,规定每个线程最多只能摘10棵苹树以便于节约时间。
各个线程摘完之后汇总计算总苹果树。

3、actor模型

actor模型属于一种基于消息传递机制并行任务处理思想,它以消息的形式来进行
线程间数据传输,避免了全局变量的使用,进而避免了数据同步错误的隐患。act-
or在接受到消息之后可以自己进行处理,也可以继续传递(分发)给其它actor进
行处理。在使用actor模型的时候需要使用第三方Akka提供的框架。

4、生产者消费者模型

生产者消费者模型都比较熟悉,其核心是使用一个缓存来保存任务。开启一个/多
个线程来生产任务,然后再开启一个/多个来从缓存中取出任务进行处理。这样的
好处是任务的生成和处理分隔开,生产者不需要处理任务,只负责向生成任务然
后保存到缓存。而消费者只需要从缓存中取出任务进行处理。使用的时候可以根
据任务的生成情况和处理情况开启不同的线程来处理。比如,生成的任务速度较
快,那么就可以灵活的多开启几个消费者线程进行处理,这样就可以避免任务的
处理响应缓慢的问题。

5、master-worker模型

master-worker模型类似于任务分发策略,开启一个master线程接收任务,然后在
master中根据任务的具体情况进行分发给其它worker子线程,然后由子线程处理
任务。如需返回结果,则worker处理结束之后把处理结果返回给master。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

N1314N

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值