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