如果堆栈扩展了vector,那意味着堆栈是同步的吗?
Vector Java docs的注释
与新的集合实现不同,Vector是同步的。
答案 0 :(得分:12)
是的,它是同步的,但根据Javadocs,您应该更喜欢Deque
而不是Stack
。
一套更完整,更一致的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是线程安全的。