并发编程队列探索

队列是编程过程中一直在使用,最近使用的频繁一点,做一下总结:

可以作为消息队列的方式有很多,不过场景不同有不同的选择

kafka:异步处理,且能实现分区,比较适合高并发分布式处理(有自动分区实现简单)
生成:异步写\同步写
消费:高级api,简单易用;低级api,可以自如控制offset


BlockingQueue:阻塞队列,这个一般用在同一进程之中,且是线程安全的,多线程下效率有影响
生成:put\offer\add put如果队列满了会一直等待;offer支持传入等待时间,等待时间过了会返回false;add会返回异常
消费:remove\pull\take 如果为空 remove返回异常;pull返回null;take会一直等待

从上面可以看出,使用queue时,必须根据业务场景选择合适的api


Disruptor:lock-free,个人感觉非常适合高并发处理,可以根据自身业务修改为快速失败或者等待
在使用cas的基础上,做了cpu缓存上的优化

redis:大多数场景的选择,不过用作缓存的比较多,用作消息队列的时候比较少


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值