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

Java ArrayQue的堆栈和同步装饰器之间的差异,java,stack,arraydeque,lifo,Java,Stack,Arraydeque,Lifo,我想有后进先出效应,我想它是同步的。有人知道我应该使用这两种实现中的哪一种吗?谷歌搜索了一段时间,仍然没有好的答案 一句话:有什么区别,为什么要使用一个而不是另一个,为什么说它有利于arrayDequeue?来自问题: 为什么说它有利于arrayDequeue 这不是说有利于(一个阶级) 据说您应该更喜欢(接口)而不是(类),因为您应该这样做,这样就可以在不改变代码的情况下替换实现 “据说……”就在堆栈的javadoc中: 接口及其实现提供了一组更完整且一致的后进先出堆栈操作,应优先于此类使用

我想有后进先出效应,我想它是同步的。有人知道我应该使用这两种实现中的哪一种吗?谷歌搜索了一段时间,仍然没有好的答案

一句话:有什么区别,为什么要使用一个而不是另一个,为什么说它有利于arrayDequeue?

来自问题:

为什么说它有利于arrayDequeue

这不是说有利于(一个阶级)

据说您应该更喜欢(接口)而不是(类),因为您应该这样做,这样就可以在不改变代码的情况下替换实现

“据说……”就在
堆栈的javadoc中:

接口及其实现提供了一组更完整且一致的后进先出堆栈操作,应优先于此类使用

Java运行时库为
Deque
提供了以下实现选项:

  • -通常是单螺纹使用的最佳选择
  • -通常是多线程使用的最佳选择
  • -如果您需要具有大小限制的堆栈
  • -如果堆栈可以变大,并且您希望在其收缩时回收空间
LinkedBlockingDeque
使用锁,这类似于使用
syntronized
,但其他所有锁都不使用
synchronized
concurrentLinkedQue
实现线程安全的方式已被证明比使用
synchronized
的实现性能更好
ArrayDeque
Stack
更快,因为它不使用
synchronized
,所以对于非线程安全的代码更好


另请参见:
另请参见:问题:

为什么说它有利于arrayDequeue

这不是说有利于(一个阶级)

据说您应该更喜欢(接口)而不是(类),因为您应该这样做,这样就可以在不改变代码的情况下替换实现

“据说……”就在
堆栈的javadoc中:

接口及其实现提供了一组更完整且一致的后进先出堆栈操作,应优先于此类使用

Java运行时库为
Deque
提供了以下实现选项:

  • -通常是单螺纹使用的最佳选择
  • -通常是多线程使用的最佳选择
  • -如果您需要具有大小限制的堆栈
  • -如果堆栈可以变大,并且您希望在其收缩时回收空间
LinkedBlockingDeque
使用锁,这类似于使用
syntronized
,但其他所有锁都不使用
synchronized
concurrentLinkedQue
实现线程安全的方式已被证明比使用
synchronized
的实现性能更好
ArrayDeque
Stack
更快,因为它不使用
synchronized
,所以对于非线程安全的代码更好


另请参见:

另请参见:

您所说的是
堆栈
,它是
向量
的子对象吗?
堆栈
是同步的,
数组定义
不是。如果希望后者同步,请使用
LinkedBlockingDeque
ConcurrentLinkedDeque
。这是否回答了您的问题?你说的是
Stack
Vector
的子对象吗?
Stack
是同步的,
ArrayDeque
不是。如果希望后者同步,请使用
LinkedBlockingDeque
ConcurrentLinkedDeque
。这是否回答了您的问题?谢谢!但暂时忘掉这一切吧。ArrayDeque的装饰器和Stack完全一样,是吗?在性能方面的意义。他们都同步了每个操作,我明白了吗?@AnaMaria什么装饰师?没有用于
Deque
的内置装饰程序。我可以发誓有collections.synchronizedQueue,因为有用于Set、Map、List的。。为什么不排队呢/谢谢!但暂时忘掉这一切吧。ArrayDeque的装饰器和Stack完全一样,是吗?在性能方面的意义。他们都同步了每个操作,我明白了吗?@AnaMaria什么装饰师?没有用于
Deque
的内置装饰程序。我可以发誓有collections.synchronizedQueue,因为有用于Set、Map、List的。。为什么不排队呢/