当喜欢LinkedBlockingQueue过ArrayBlockingQueue?
LinkedBlockingQueue
ArrayBlockingQueue
何时LinkedBlockingQueue以及ArrayBlockingQueue何时使用哪种数据结构:
尽管存在类似的问题,但它并没有突出表明应该优先选择哪个事实?
蜘蛛侠鲍里斯(Boris the Spider)已经概述了ArrayBlockingQueue和之间最明显的区别LinkedBlockingQueue-前者始终是有界的,而后者可以是无界的。
因此,如果您需要无限制的阻塞队列,LinkedBlockingQueue或者将其LinkedTransferQueue用作工具箱BlockingQueue中的最佳选择java.util.concurrent。
LinkedTransferQueue
BlockingQueue
java.util.concurrent
但是,假设您需要一个有限的阻塞队列。最后,您应该基于对真实工作负载进行模拟的广泛实验来选择一种实现。不过,以下是一些注释,可以帮助您进行选择或解释实验结果:
根据您的使用情况,并做了多少你关心性能,你可能还需要的外观之外java.util.concurrent,并考虑干扰物(一个非常快,但有些专门界无阻塞环形缓冲区)或JCTools(各种界或无界根据生产者和消费者的数量,具有不同保证的队列)。