ArrayBlockingQueue和LinkedBlockingQueue之间有什么区别 [英] What is the Difference between ArrayBlockingQueue and LinkedBlockingQueue

查看:167
本文介绍了ArrayBlockingQueue和LinkedBlockingQueue之间有什么区别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


  1. 使用ArrayBlockingQueue更好的情况是什么?使用LinkedBlockingQueue什么时候更好?

  2. 如果LinkedBlockingQueue默认容量等于MAX Integer,将它用作具有默认容量的BlockingQueue真的很有帮助吗?


推荐答案

ArrayBlockingQueue 支持一个大小在创建后永远不会改变的数组。将容量设置为 Integer.MAX_VALUE 将创建一个空间成本较高的大型阵列。
ArrayBlockingQueue 总是受限制。

ArrayBlockingQueue is backed by an array that size will never change after creation. Setting the capacity to Integer.MAX_VALUE would create a big array with high costs in space. ArrayBlockingQueue is always bounded.

LinkedBlockingQueue 动态创建节点,直到达到容量。默认情况下,这是 Integer.MAX_VALUE 。使用这么大的容量在空间上没有额外的成本。
LinkedBlockingQueue 可选择受限制。

LinkedBlockingQueue creates nodes dynamically until the capacity is reached. This is by default Integer.MAX_VALUE. Using such a big capacity has no extra costs in space. LinkedBlockingQueue is optionally bounded.

这篇关于ArrayBlockingQueue和LinkedBlockingQueue之间有什么区别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆