阻塞队列的性能对比

主要是比较offer跟poll两个方法的性能,开N个线程,每个线程往队列里写或者取500个整数。

线程数 20 50 100 200 500 1000
LinkedBlockingQueue      15,0 31,15 32,16 63,32 203,47 563,110
ArrayBlockingQueue 15,0 16,15 31,15 47,16 125,47 364,68
PriorityBlockingQueue 78,78 172,188 360,422 813,969 3094,2641 6547,5453

逗号前的数字是offer测试花费的时间,逗号后的数字是poll测试花费的时间,单位毫秒。
结论:
1、ArrayBlockingQueue性能优于LinkedBlockingQueue,但是LinkedBlockingQueue是无界的。
2、ArrayBlockingQueue和LinkedBlockingQueue的poll方法总是比offer方法快,并发越高,差距越大
3、ArrayBlockingQueue和LinkedBlockingQueue的性能远高于PriorityBlockingQueue,显然优先队列在比较优先级上的操作上耗费太多文章转自庄周梦蝶 

,原文发布时间2008-09-08

时间: 2024-10-26 23:19:18

阻塞队列的性能对比的相关文章

阻塞队列BlockingQueue用法(转)

多线程环境中,通过队列可以很容易实现数据共享,比如经典的"生产者"和"消费者"模型中,通过队列可以很便利地实现两者之间的数据共享. 假设我们有若干生产者线程,另外又有若干个消费者线程.如果生产者线程需要把准备好的数据共享给消费者线程,利用队列的方式来传递数据,就可以很方便地解决他们之间的数据共享问题.但如果生产者和消费者在某个时间段内,万一发生数据处理速度不匹配的情况呢?理想情况下,如果生产者产出数据的速度大于消费者消费的速度,并且当生产出来的数据累积到一定程度的时

Java中使用阻塞队列控制线程集实例_java

队列以一种先进先出的方式管理数据.如果你试图向一个已经满了的阻塞队列中添加一个元素,或是从一个空的阻塞队列中移除一个元素,将导致线程阻塞.在多线程进行合作时,阻塞队列是很有用的工具.工作者线程可以定期的把中间结果存到阻塞队列中.而其他工作者线程把中间结果取出并在将来修改它们.队列会自动平衡负载.如果第一个线程集运行的比第二个慢,则第二个线程集在等待结果时就会阻塞.如果第一个线程集运行的快,那么它将等待第二个线程集赶上来. 下面的程序展示了如何使用阻塞队列来控制线程集.程序在一个目录及它的所有子目

四种整数数据类型的性能对比

数据|数据类型|性能 在我们写VBA程序的时候,我们经常要面对数据类型定义的选择,有的情况下,业务本身对于数据类型有要求和限制,那么我们并不难以选择,有些时候却没有限制,我们可以任意选用四种整数类型(Byte,Integer,Long,Currency)中的一种,例如: For i=1 to 100 在这行代码中,我们该把变量i定义为什么类型的变量呢?显然四种整数类型都可以正常运行,但是他们的效率是否相同呢?我们到底该如何选择?有的人说,当时是选最小的数据类型Byte,有的人说在32位系统上,3

Java中的阻塞队列

1. 什么是阻塞队列? 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列.这两个附加的操作是:在队列为空时, 获取元素的线程会等待队列变为非空.当队列满时,存储元素的线程会等待队列可用.阻塞队列常用于生 产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程.阻塞队列就 是生产者存放元素的容器,而消费者也只从容器里拿元素. 阻塞队列提供了四种处理方法: 方法\处理方式  抛出异常  返回特殊值  一直阻塞    超时退出插入方 法          

HBase在单Column和多Column情况下批量Put的性能对比分析

针对HBase在单column family单column qualifier和单column family多column qualifier两种场景下,分别批量Put写入时的性能对比情况,下面是结合HBase的源码来简单分析解释这一现象. 1. 测试结果 在客户端批量写入时,单列族单列模式和单列族多列模式的TPS和RPC次数相差很大,以客户端10个线程,开启WAL的两种模式下的测试数据为例, 单列族单列模式下TPS能够达到12403.87,实际RPC次数为53次: 单列族多列模式下,TPS只有

Hadoop虚拟化的性能对比和调优经验

虚拟化为Hadoop注入了前所未有的活力,从IT生产管理的角度,表现为以下几点: ·Hadoop和其他消耗不同类型资源的应用一起部署共享数据中心可以提高总体资源利用率: ·灵活的虚拟机操作使得用户可以动态的根据数据中心资源创建.扩展自己的Hadoop集群,也可以缩小当前集群.释放资源支持其他应用如果需要: ·通过与虚拟化架构提供的HA.FT集成,避免了传统Hadoop集群中的单点失败,再加之Hadoop本身的数据可靠性,为企业大数据应用提供了可靠保证. 基于这些原因,vSphere Big Da

Windows 7和Windows Vista处理器、内存性能对比

Windows 7和Windows Vista的性能对比评测很多,但大多都是关于3D游戏的,不过玩游戏毕竟不是长久之计,所以今天我们再看看另外两个更基本的方面:处理器和内存性能. 测试平台配置: 处理器:Core i7-920 OC 4GHz (200MHz×20) 散热器:Noctua NH-U12P 主板:技嘉GA-EX58-UD5 显卡:技嘉GeForce GTX 285 内存:OCZ Blade PC-16000 DDR3 2GB×3 (7-8-7-20) 硬盘:西部数据VelicoRa

oracle 10g数据泵和导入导出性能对比(五)影响数据泵导入性能的最大因素

前一段时间在一次迁移中同时用到了数据泵和EXP,发现二者效率的差别还是相当大的.这里通过一个例子简单比较一下. 这篇文章讨论影响数据泵导入性能的最大因素. 前面写了几篇文章,分别介绍EXP/IMP与EXPDP/IMPDP的性能对比,根据前面几篇文章的描述,如果不使用并行,似乎IMPDP的效率要比IMP没有一个数量级的提示.对于当前的环境而言,事实确实如此.不过前面一直没有描述一个重要的因素,当然的数据库环境由于配置了STANDBY数据库,因此不但处于归档模式,还设置了FORCE LOGGING:

Java线程:新特征-阻塞队列

阻塞队列是Java5线程新特征中的内容,Java定义了阻塞队列的接口 java.util.concurrent.BlockingQueue,阻塞队列的概念是,一个指定长度的队列,如果队列满了,添加新元素的操作会被阻塞等待,直到有空位为止.同样,当队列为空时候,请求队列元素的操作同样会阻塞等待,直到有可用元素为止. 有了这样的功能,就为多线程的排队等候的模型实现开辟了便捷通道,非常有用. java.util.concurrent.BlockingQueue继承了java.util.Queue接口,