适用阻塞队列的好处:多线程操作共同的队列时不需要额外的同步,另外就是队列会自动平衡负载,即那边(生产与消费两边)处理快了就会被阻塞掉,从而减少两边的处理速度差距。
当许多线程共享访问一个公共 collection 时,ConcurrentLinkedQueue 是一个恰当的选择。
当许多线程共享访问一个公共 collection 时,ConcurrentLinkedQueue 是一个恰当的选择。
LinkedBlockingQueue 多用于任务队列
ConcurrentLinkedQueue 多用于消息队列
多个生产者,对于LBQ性能还算可以接受;但是多个消费者就不行了mainLoop需要一个timeout的机制,否则空转,cpu会飙升的。LBQ正好提供了timeout的接口,更方便使用
如果CLQ,那么我需要收到处理sleep
如果CLQ,那么我需要收到处理sleep
单生产者,单消费者 用 LinkedBlockingqueue
多生产者,单消费者 用 LinkedBlockingqueue
单生产者 ,多消费者 用 ConcurrentLinkedQueue
多生产者 ,多消费者 用 ConcurrentLinkedQueue

本文总结了并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue的使用场景。阻塞队列在多线程操作中提供同步和负载平衡,适合任务队列。ConcurrentLinkedQueue适用于消息队列,尤其在多生产者、多消费者的情况下表现良好。对于单生产者、单消费者或多个生产者、单消费者,LinkedBlockingQueue是合适选择,而多个消费者时,ConcurrentLinkedQueue配合处理策略能避免CPU空转。
517

被折叠的 条评论
为什么被折叠?



