欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

并发编程队列探索

程序员文章站 2022-04-27 15:45:43
...
队列是编程过程中一直在使用,最近使用的频繁一点,做一下总结:

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

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:大多数场景的选择,不过用作缓存的比较多,用作消息队列的时候比较少