0

我想有 LIFO 效果,我希望它是同步的。有谁知道我应该使用这两种实现中的哪一种?谷歌搜索了一段时间,仍然没有好的答案。

底线:有什么区别,为什么使用一个而不是另一个,为什么说它偏爱arrayDequeue?

4

1 回答 1

2

从问题:

为什么说有利于arrayDequeue?

不是偏爱ArrayDeque(一类)。

据说你应该更喜欢Deque(一个接口)而不是Stack(一个类),因为你应该编程到一个接口,允许你替换实现而不改变你的代码。

据说……”就在以下的 javadoc 中Stack

接口及其实现提供了一组更完整一致的 LIFO 堆栈操作Deque,应优先使用此类。

Java 运行时库为 a 提供了以下实现选择Deque

LinkedBlockingDeque使用锁,与 using 类似synthronized,但其他都不使用synchronized。这种ConcurrentLinkedDeque实现线程安全的方式已被证明比使用synchronized. ArrayDequeStack不使用更快synchronized,因此对于非线程安全代码更好。


另请参阅:为什么我应该使用 Deque 而不是 Stack?
另请参阅:为什么 Java Vector(和 Stack)类被认为已过时或不推荐使用?

于 2020-08-21T01:03:48.977 回答