java在生产者和消费者模型中使用本地变量优化过度竞争

请关注我的微信公众号

个人微信公众号

技术交流群 (仅作技术交流):642646237

​请关注我的头条号:

使用本地变量优化过度竞争

消费者对counts有一些不必要的竞争。
与其所有消费者都共享同一个counts,不如每个消费者各自维护一个计数map,再对这些计数map进行合并。

代码

建立了一个相对复杂的生产者-消费者程序,多个消费者通过一个并发队列和一个并发map进行协作,程序中没有显式地使用锁,而是使用了标准库提供的并发工具。




采用此方法只是减少了对counts的竞争的频率,并没有彻底消除掉。
在最后合并localCounts到counts中的时候,还是有一定几率会发生过度竞争。

并发程序性能与线程数的关系

并行程序起初性能快速线性增长,之后增长趋势放缓,最终性能达到极值,线程数再增加性能则会下降。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,384评论 11 349
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,067评论 19 139
  • 在上篇中,我们已经讨论过如何去实现一个 Map 了,并且也讨论了诸多优化点。在下篇中,我们将继续讨论如何实现一个线...
    一缕殇流化隐半边冰霜阅读 7,706评论 5 41
  • 摩羯座 摩羯座很顾家,喝醉的情况非常至少,但是只要喝醉了,那就变得非常可爱,通常成熟稳重的他们,完全逆转,变得活泼...
    星座秘码阅读 505评论 0 0
  • 如果有人说,我的个人理想目标远高于个人赚钱,一定会被无数其他人嘲笑(特指在天朝,这个时代)。 有人就会说,“个人赚...
    VanillaUnicode阅读 932评论 0 3