arraydeque的堆栈和同步装饰器之间的差异

e5njpo68  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(350)

我想有后进先出效应,我想它是同步的。有人知道我应该使用这两种实现中的哪一种吗?谷歌搜索了一段时间,仍然没有好的答案。
一句话:有什么区别,为什么用一个而不是另一个,为什么说它有利于队列?

j1dl9f46

j1dl9f461#

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

相关问题