11

如果堆栈扩展向量是否意味着堆栈已同步?

Vector Java 文档中的注释

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

4

2 回答 2

12

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

StackJavadocs

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

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

于 2012-12-20T15:12:26.137 回答
3

是的,从 Vector 继承的方法在 Stack 中保持同步。自己的 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 是线程安全的。

于 2012-12-20T15:16:48.793 回答