zoukankan      html  css  js  c++  java
  • LinkedBlockingQueue,ArrayListBlockingQueue,SynchronousQueue

    LinkedBlockingQueue :
    1、读写锁分开,性能较 ArrayListBlockingQueue 只有一把锁控制读写要高一些。
    2、无界队列,不会触发Reject异常,ArrayListBlockingQueue初始化时必须指定宽度。SynchronousQueue的容量只有1。

    ArrayListBlockingQueue
    1、读写一把锁,在大并发的消费者和生产者场景中,性能较LinkedBlockingQueue差一些。
    2、有界队列,会触发Reject异常,在增加队列和删除队列元素时,不会产生额外的数据(数组特性),GC影响比LinkedBlockingQueue更小

    SynchronousQueue

    1、可以理解为容量为1的阻塞队列,只有被消费了,才能接受生产者的消息。
    2、当线程池的线程数已经达到了maxiumSize时,新增加时出发Reject异常
    3、有公平策略和不公平策略,对应到不同进出算法 - FIFO,LIFO。

    场景归类

    无界的消息任务,读写频繁,使用LinkedBlockingQueue
    有界的,对GC影响较小,读写不过于频繁的场景,使用ArrayListBlockingQueue
    只有一个生产者和消费者,需要使用不同的公平策略的场景,使用 SynchronousQueue

  • 相关阅读:
    正则表达式
    [创业指南]给海归技术创业兄弟的九个忠告
    about avast
    设计模式Hibernate
    job desc
    把INT转换成2进制等
    微服务调用跟踪
    Redis 分布式锁实现
    jquery中的$.ajax()方法
    订单从ftp写入到b2b
  • 原文地址:https://www.cnblogs.com/zhoukedou/p/6932287.html
Copyright © 2011-2022 走看看