堆栈扩展矢量

时间:2012-12-20 15:09:05

标签: java vector stack

如果堆栈扩展了vector,那意味着堆栈是同步的吗?

Vector Java docs的注释

  

与新的集合实现不同,Vector是同步的。

2 个答案:

答案 0 :(得分:12)

是的,它是同步的,但根据Javadocs,您应该更喜欢Deque而不是Stack

来自Stack Javadocs

  

一套更完整,更一致的LIFO堆栈操作   由Deque接口及其实现提供,应该   优先使用此类。例如:

     

Deque<Integer> stack = new ArrayDeque<Integer>();

答案 1 :(得分:3)

是的,从Vector继承的方法在Stack中保持同步。自己的堆栈方法peek,pop,search在Stack中同步。 Stack.push和Stack.empty方法不同步,但

public boolean empty() {
    return size() == 0;
}

public E push(E item) {
    addElement(item);
    return item;
}

这两个方法都调用了Vector的同步方法,因此Stack.empty和Stack.push是线程安全的。