想知道为什么会有一个LinkedBlockingDeque
,而没有并发的相对应的,是一个基于可调整大小的数组的ArrayDeque
。
LinkedBlockingQueue
使用一组类似于LinkedList
(尽管没有实现List
)的节点。
我知道可以使用ArrayBlockingQueue
,但如果想要使用ArrayBlockingDeque
呢?为什么没有这样的选择?
提前感谢。
想知道为什么会有一个LinkedBlockingDeque
,而没有并发的相对应的,是一个基于可调整大小的数组的ArrayDeque
。
LinkedBlockingQueue
使用一组类似于LinkedList
(尽管没有实现List
)的节点。
我知道可以使用ArrayBlockingQueue
,但如果想要使用ArrayBlockingDeque
呢?为什么没有这样的选择?
提前感谢。
这可能不是一个关于stackoverflow的合适问题。但我想对这些实现做出一些评论。
-> 首先,我们需要回答为什么针对某个接口我们会提供不同的实现。 假设我们有一个接口A,并且有两个实现B和C。现在假设这些实现通过其实现提供相同的功能。 但是B比C具有更好的性能。 那么我们应该除了两个原因之外删除实现
1. Backward Compatibility - marking as deprecated.
2. There is a specific scenario where we cannot use B implementation.
1. There would have been no Capacity Restriction, which we normally
get from ArrayBlockingQueue.
2. There would have guards to access to tail and head pointers
same as in LinkedBlockingDeque and therefore no significant performance
gain over LinkedBlockingDeque.