javabbs开源论坛系统

功能强大、开源、代码通俗易懂、注释详细、面向二次开发友好!

FreeCMS团队又一力作!打造更好的中国开源jsp java 论坛系统!

javabbsV1.2已发布!



在线演示 立即购买 下载用户手册
客服QQ: 124812878 联系电话: 18339991503 Email: freeteam@foxmail.com
点击查看FreeCMS商业版开源CMS系统 点击查看shop4j开源java商城系统

并发编程队列探索 -

加入收藏夹】     【打印】     【关闭】 来源: 日期:2017-05-12 04:00:00 点击量: 收藏

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

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

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







上一条

下一条

相关新闻
自定义表单