我想有后进先出效应,我想它是同步的。有人知道我应该使用这两种实现中的哪一种吗?谷歌搜索了一段时间,仍然没有好的答案。一句话:有什么区别,为什么用一个而不是另一个,为什么说它有利于队列?
j1dl9f461#
从问题:为什么说有利于排队?这不是说有利于 ArrayDeque (一节课)。据说你应该 Deque (接口)结束 Stack (一个类),因为您应该对一个接口进行编程,这样您就可以在不改变代码的情况下替换实现。“据说……”就在 Stack :后进先出(lifo)堆栈操作的更完整和一致的集合由 Deque 接口及其实现,应优先于此类使用。java运行时库为 Deque : ArrayDeque -通常是单线程使用的最佳选择 ConcurrentLinkedDeque -通常是多线程使用的最佳选择 LinkedBlockingDeque -如果你需要大小限制的堆栈 LinkedList -如果堆栈可以变大,并且您希望在其收缩时回收空间 LinkedBlockingDeque 使用锁,这与使用 synthronized ,但其他人都没用 synchronized . 顺便说一句 ConcurrentLinkedDeque 被证明比使用 synchronized . ArrayDeque 比…快 Stack 因为它没有使用 synchronized ,因此对于非线程安全的代码更好。另请参阅:为什么要在堆栈上使用deque?另请参阅:为什么java向量(和堆栈)类被认为过时或不推荐使用?
ArrayDeque
Deque
Stack
ConcurrentLinkedDeque
LinkedBlockingDeque
LinkedList
synthronized
synchronized
1条答案
按热度按时间j1dl9f461#
从问题:
为什么说有利于排队?
这不是说有利于
ArrayDeque
(一节课)。据说你应该
Deque
(接口)结束Stack
(一个类),因为您应该对一个接口进行编程,这样您就可以在不改变代码的情况下替换实现。“据说……”就在
Stack
:后进先出(lifo)堆栈操作的更完整和一致的集合由
Deque
接口及其实现,应优先于此类使用。java运行时库为
Deque
:ArrayDeque
-通常是单线程使用的最佳选择ConcurrentLinkedDeque
-通常是多线程使用的最佳选择LinkedBlockingDeque
-如果你需要大小限制的堆栈LinkedList
-如果堆栈可以变大,并且您希望在其收缩时回收空间LinkedBlockingDeque
使用锁,这与使用synthronized
,但其他人都没用synchronized
. 顺便说一句ConcurrentLinkedDeque
被证明比使用synchronized
.ArrayDeque
比…快Stack
因为它没有使用synchronized
,因此对于非线程安全的代码更好。另请参阅:为什么要在堆栈上使用deque?
另请参阅:为什么java向量(和堆栈)类被认为过时或不推荐使用?