前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你不可不知的并发工具JCTools

你不可不知的并发工具JCTools

作者头像
书唐瑞
发布2022-06-02 13:50:46
1.7K0
发布2022-06-02 13:50:46
举报
文章被收录于专栏:Netty历险记

JDK自身提供了很多同步容器,并发容器,阻塞队列等.相对来说,它们的性能已经很高了,然而Netty作为一个精益求精的产品,在性能追求上力求做到最好最高.

JDK的阻塞队列常用于生产者和消费者场景, 提供了7个阻塞队列供开发者使用. 在Netty中, 当服务端的多个Channel需要同时向客户端写数据时, 因为只有IO线程才可以进行读写操作, 非IO线程只能将发送的请求放到IO线程对应的队列中. 这种也是生产者和消费者的场景,而且是多个生产者单个消费者的情况.

Netty并没有使用JDK提供的阻塞队列实现生产者和消费者, 而是使用了一个MpscUnboundedArrayQueue类.

MPSC - Multi Producer Single Consumer

那么MpscUnboundedArrayQueue类是谁提供的呢? 它是JCTools这个包提供的.

JCTools提供了高性能的非阻塞的并发数据结构, 其中包括多个生产者单个消费者的MPSC数据结构.

通过向Queue中添加元素,当元素数量大于容器容量的时候,并不是通过创建一个2倍的数组,将旧数组元素拷贝到新数组元素,而是创建一个同等大小的数组,用前一个数组的某个元素指向这个新的数组.

JCTools底层使用了很多

代码语言:javascript
复制
UNSAFE.putOrderedObject(buffer, offset, e);

关于JCTools的介绍以及相关的UNSAFE,我们接下来继续介绍.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Netty历险记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档