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

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

作者: 每天学点编程 | 来源:发表于2018-02-20 19:28 被阅读21次

    请关注我的微信公众号

    个人微信公众号

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

    ​请关注我的头条号:

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

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

    代码

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




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

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

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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/lnbgtftx.html