#30天专注成长计划#java-并发 ConcurrentLinkedQueue 队列

1.什么是ConcurrentLinkedQueue 队列?

首先看一看的关系图:


它是一个使用CAS 算法实现的非阻塞线程安全的FIFO队列,来保证元素的一致性。因为是使用NODE 节点实现的队列,所在在获取长度的时候,会遍历一遍此队列,会比较耗时

我们在使用判断元素是否为空的时候,最好不要用size() 来做判断,可以用isEmpty()方法来判断。ps:因为此类实现了Collection 接口,所以会有size() 和isEmpty() 方法。

2.最后体验一下队列中使用size()的后果。我往队列里面放入10000000 我使用ArrayList 的size() 做比较。测试有时候会相差1秒多,随着数据的增大会更加明显,

size 队列遍历的代码如下:所以在多线程并发的情况下,最后不用size() 。


我写了一个例子来比较队列和数组使用size() 的区别,请看下面的代码:

实体bean:


主线程方法:



测试结果如下:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容