多线程并发编程的三种设计模式:Future模式,MasterAndWorker模式,生产者消费者模式

11 篇文章 0 订阅
4 篇文章 0 订阅

    Future模式,核心概念就是将任务异步执行,然后继续做自己主任务,最后需要结果的时候,将异步执行的结果取出。常见的实现就有ajax异步传输,使用异步线程提交数据,不影响主线程,当返回结果的时候再回调给主线程。java中常常会有一些任务十分冗长,可能需要长时间的计算,但是此计算的结果可能并不会被接下来的步骤所依赖,只需要在需要计算结果的时候返回给主线程就行了,这个时候,多线程就起到了作用,写一个线程,开启计算任务,然后在计算结束时,通知主线程,主线程获取结果,这就是简单的Future模式,JDK中有关于Future的实现。

    MasterAndWorker模式,核心概念为将任务细化,如,当客户端向服务器端发送一系列任务请求时,传统的处理,时将任务放入队列,由客户端一个一个处理,MasterAndWorker模式就是讲所有的任务交由一个Master,再由Master分发给多个Worker,分批处理。常见的实现场景为,分布式的负载均衡,分布式处理任务,然后将结果交给Master,最后统一响应。一般会有一个任务队列的对象,再有一个就是结果集的map和Worker的map,通过此方式来实现MasterAndWorker模式。总之核心的思想就是用空间换时间,有可能Worker是多个线程,需要更多的内存来处理,有可能Worker是多个服务器。

    最后就是生产者消费者模式,这个我们并不陌生,在线程基础课中,我们曾经手动实现过生产者消费者模型,所谓生产者消费者,必定有生产者群和消费者群,一个作为资源的提供者,一个作为资源的获取者。常见的实现场景有MQ,消息的生产者向中间服务器发送消息,中间服务器使用一个队列来处理接受到的消息,消息的消费者则直接向中间服务器取消息,由于是多线程环境,通常使用阻塞队列。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值